我有這段代碼,它將節點添加到數組然後更改它,firstNode
對象設置在init
函數中。javascript對象屬性指向另一個屬性
var myClass = function() {
this.items = []
this.firstNodeValues = {};
this.init = function() {
var firstIndex = false;
for (i = 10; i <= 15; i++) {
Node = {};
Node.index = i;
Node.name = "undefined";
if (i == 10) {
Node.name = "John"
this.firstNodeValues = Node;
}
this.items[i] = Node;
}
}
this.iterate = function() {
var newIndex = 10;
for (i = 10; i <= 15; i++) {
this.items[i].index = newIndex;
if (i == 10) {
this.items[i].name = "Michael";
}
newIndex++;
}
}
}
var test = new myClass();
test.init();
console.debug(test.firstNodeValues.name) // this gives value "John"
test.iterate();
console.debug(test.firstNodeValues.name) // this gives value "Michael"
第二個調試返回"Michael"
但是爲什麼?看起來firstNodeValues
有一個指向節點items[10]
的指針。
我希望如果我在firstTime
中設置了FirstNodeValues
,並且稍後改變了節點值,那麼firstNodeValues
就不會改變並且保持與我第一次設置時完全相同。
請投下我的人請告訴我爲什麼?如果我犯了一個錯誤,我想從中吸取教訓。 – Cerbrus