javascript中的语法错误:缺少;声明前

javascript中的语法错误:缺少;声明前,javascript,firefox-addon,Javascript,Firefox Addon,我正在写一个小mozilla插件,我在两个类中遇到了相同的问题 var { ActionButton } = require('sdk/ui/button/action'); var MateButton = function(mate) { var self = this; myMate: mate, button: ActionButton( { id: "my-button", label: self.myMate.mess

我正在写一个小mozilla插件,我在两个类中遇到了相同的问题

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:function()”之前发现一个错误:SyntaxError:missing;在声明之前

我试图用“;”替换“;”,但错误变成“函数语句需要一个名称”

我以前也尝试过删除函数
onChange
和冒号,但是错误转移到了按钮定义


有人能帮我吗?

您的声明语法在这里混淆了。在代码的一部分中使用函数声明,在另一部分中使用对象声明

函数声明涉及运行一段代码并返回单个值,而对象声明不运行代码,而是返回(隐式)一系列键值对(
key:value
,由
分隔,

您的
MateButton=function(mate)
行说明
MateButton
是一个函数,因此
key:value
对不合适。试试这个:

var MateButton=函数(mate){
var self=这个;
self.myMate=mate;
self.button=ActionButton({
id:“我的按钮”,
标签:self.myMate.message\u OFF,
图标:{
“16”:self.myMate.icon_关闭,
}
});
self.onChange=函数(){
var mate=self.myMate;
var icon_tmp=((mate.online==true)?mate.icon_开:mate.icon_关);
var message_tmp=((mate.online==true)?mate.message_打开:mate.message_关闭);
self.button.state(“窗口”{
“标签”:信息\u tmp,
“图标”:{
“16”:图标\u tmp,
}
});
};
回归自我;

};您的声明语法在这里混淆了。在代码的一部分中使用函数声明,在另一部分中使用对象声明

函数声明涉及运行一段代码并返回单个值,而对象声明不运行代码,而是返回(隐式)一系列键值对(
key:value
,由
分隔,

您的
MateButton=function(mate)
行说明
MateButton
是一个函数,因此
key:value
对不合适。试试这个:

var MateButton=函数(mate){
var self=这个;
self.myMate=mate;
self.button=ActionButton({
id:“我的按钮”,
标签:self.myMate.message\u OFF,
图标:{
“16”:self.myMate.icon_关闭,
}
});
self.onChange=函数(){
var mate=self.myMate;
var icon_tmp=((mate.online==true)?mate.icon_开:mate.icon_关);
var message_tmp=((mate.online==true)?mate.message_打开:mate.message_关闭);
self.button.state(“窗口”{
“标签”:信息\u tmp,
“图标”:{
“16”:图标\u tmp,
}
});
};
回归自我;

};删除
此处
“16”:图标,
myMate:mate是的,谢谢你,我把“this.myMate=mate;”改为“myMate:mate;”,忘了改“;”。但它在0之前就已经犯了这些错误。这一切都是混乱的。你一半使用函数声明,一半使用对象声明。是的,对。这是因为我需要一些对象和一个方法是的,谢谢你,我把“this.myMate=mate;”改为“myMate:mate;”,忘了改“;”。但它在0之前就已经犯了这些错误。这一切都是混乱的。你一半使用函数声明,一半使用对象声明。是的,对。这是因为我需要一些对象和一个方法。