2013-06-19 21 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