對不起,我不知道如何解釋,但情況就像這個例子。js更改變量會影響到原始變量
我瞬間new function c
後,並更改值this.i
將直接影響到a.
我該如何解決這個問題?我不知道this.i
會影響到a
。
http://jsbin.com/iPIkomu/1/edit
var a = { c: 1 };
var b = function(){
this.i = a;
this.i.c = 2;
};
var c = function(){
this.i = a;
alert(this.i.c);
};
c.prototype.set = function(){
this.i.c = 4;
alert(a.c);
};
d =new c();
d.set();
如果你不想被共享的對象,那麼你爲什麼做參考到你的構造函數創建的每個對象上的同一個對象?對於'var a = {...}'還有其他目的嗎?是否有一個理由需要在構造函數之外?我不知道如何解決這個問題,因爲我不知道你最終想做什麼。 –
這是因爲一個可能是一個默認的變量用於許多構造函數......有意義嗎? – Till
如果要由幾個構造函數使用,並且您不想重複代碼,則可以使用下面答案中所示的函數創建它,也可以使用共享對象作爲主對象的原型,然後使用'Object.create()'設置繼承。所以你會'this.i = Object.create(a);' –