2013-06-19 25 views
0

我有一个这样的对象:“无效分配左侧”错误:firefox还是chrome?

var myObj = { 
    someProp: 1, 
    updateObj: function (obj) {this = obj;} 
} 

所以我得到的含firefox的功能就行了invalid assignment left hand side但不是在铬。所以我想知道我应该选择哪一个?

谢谢。

+0

'这是一个预定义的关键字,你不能重新定义它。铬也给出了相同的错误,因为任何其他浏览器将... – Teemu

+0

我只注意到,铬也给这个错误,当我实际上调用函数,但不是为了声明。 –

+0

是的,浏览器分析代码的方式不同,有些会在使用前检查语法(每次使用时都会分析一个字面对象)。 – Teemu

回答

0

使用像“自我”而不是这个。你正试图分配给'这'是不允许的。

var myObj = { 
    someProp: 1, 
    updateObj: function (obj) {self = obj;} 
} 

如果你实际上是试图改变什么对象是,只是重新分配它...

var obj = { 
    someProp: 1 
}; 

obj = { 
    someProp: 2 
}; 

...或不喜欢一个更明确的更新:

var obj = { 
    someProp: 1, 
    updateObj: function(obj) { 
     this.someProp = obj.someProp; 
    } 
}; 
+0

'self'是'window'的同义词,请使用'var'来避免冲突。 – Teemu