2016-01-03 4 views
1

Я пишу небольшое дополнение к Mozilla, и у меня такая же проблема на двух классах.Ошибка синтаксиса в javascript: missing; перед оператором

var { ActionButton } = require('sdk/ui/button/action'); 

var MateButton = function(mate) 
{ 
    var self = this; 
    myMate: mate, 
    button: ActionButton(
    { 
     id: "my-button", 
     label: self.myMate.message_OFF, 
     icon: 
     { 
      "16": self.myMate.icon_OFF, 
     } 
    }), 
    onChange: function() 
    { 
     var mate = self.myMate; 
     var icon_tmp = ((mate.online == true) ? mate.icon_ON : mate.icon_OFF); 
     var message_tmp = ((mate.online == true) ? mate.message_ON : mate.message_OFF); 

     self.button.state("window", 
     { 
      "label": message_tmp, 
      "icon": 
      { 
       "16": icon_tmp, 
      } 
     }); 
    } 
}; 

exports.MateButton = MateButton; 

Выпуск:

Консоль обнаруживает ошибку перед "OnChange: функция()": SyntaxError: отсутствующий; перед заявлением.

Я попытался заменить «,» на «;» но ошибка становится «оператором функции требует имя».

Я также попытался удалить функцию onChange и двоеточие раньше, но ошибка перешла к определению кнопки.

Может ли кто-нибудь мне помочь?

+0

Удалить ',' 'здесь "16": значок,' ' – Valijon

+0

myMate: мат,' << эта работа не должно либо ... заменить ',' 'с , ' – Flocke

+0

Да, спасибо, я изменил« this.myMate = mate; » по "myMate: mate;" и забыл изменить «;». Но он уже делал эти ошибки до 0 – Nucktrooper

ответ

0

У вас есть ваш синтаксис объявления, смешанный здесь. В части вашего кода вы используете декларацию функции, в другой части вы используете Object Declaration.

Функции, Декларация включает в себя запуск части коды и возвращает одно значение, тогда как Декларация объекта пробегов нет кода, а вместо этого возвращает (неявно) ряд ключевых пар значений (key: value , разделенные ,).

Ваша линия MateButton = function(mate) заявляет, что MateButton является функцией, поэтому пары key: value неуместны. Попробуйте это:

var MateButton = function(mate) { 
 
    var self = this; 
 
    self.myMate = mate; 
 
    self.button = ActionButton({ 
 
    id: "my-button", 
 
    label: self.myMate.message_OFF, 
 
    icon: { 
 
     "16": self.myMate.icon_OFF, 
 
    } 
 
    }); 
 
    self.onChange = function() { 
 
    var mate = self.myMate; 
 
    var icon_tmp = ((mate.online == true) ? mate.icon_ON : mate.icon_OFF); 
 
    var message_tmp = ((mate.online == true) ? mate.message_ON : mate.message_OFF); 
 

 
    self.button.state("window", { 
 
     "label": message_tmp, 
 
     "icon": { 
 
     "16": icon_tmp, 
 
     } 
 
    }); 
 
    }; 
 
    return self; 
 
};

Смежные вопросы