Получение переменной из метода объекта в javascript

#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)