#javascript #jquery #variables #object #return
#javascript #jquery #переменные #объект #Возврат
Вопрос:
Я новичок в objects в javascript, и у меня возникли некоторые проблемы со следующим кодом.
var Color = function(color){
this.color = color;
this.getCode = function(){
var colorHex;
var colorRBG;
switch(color){
case "White":
colorHex = "#ffffff";
colorRGB = "255,255,255";
break;
case "Black":
colorHex = "#000000";
colorRGB = "0,0,0";
break;
default:
return false;
}
return {
colorHex: colorHex,
colorRGB: colorRGB
}
}
}
Что я хочу сделать, так это получить значение colorHex, подобное этому, но оно не работает:
var newColor = new Color("White");
alert(newColor.getCode().colorHex);
Что я делаю не так?
Комментарии:
1. это работает, jsfiddle.net/JQYED/1 в Chrome
2. Это упрощенная версия моего реального приложения. Возможно, у меня где-то другая ошибка, потому что я продолжаю получать «неопределенное» значение в своем приложении.
Ответ №1:
Вам нужно использовать this.color
вместо color в вашем операторе switch. Здесь цвет не был бы определен, и был бы вызван регистр по умолчанию.
Color (параметр) больше не находится в области видимости, поэтому вам необходимо получить доступ к переменной-члену. Javascript не добавляет это значение автоматически, как это делают другие языки, вы должны сделать это вручную.
Комментарии:
1. Я пробовал это, но я продолжаю получать «undefined»… Я опубликую код ниже.
2. Действительно?? Вы могли бы попробовать:
newColor.getCode.call(newColor)
взломать его. Однако изменениеswitch(color)
наswitch(this.color)
должно сработать…3. Я только что получил это! Вот почему я передавал функции значение «colro» вместо «color». Я этого не видел, и это сводило меня с ума. Кстати, это отлично работает только с «color» в инструкции switch.
Ответ №2:
вам нужно switch(this.color)