为什么不同的对象plyers [o]和plyers [1]被赋予相同的值?虽然应该有1
的差异var player = {
'money': 1,
'increase' : 10
}
var players = [];
for (var i=0;i<2;i++){
players[i] = player;
}
for (var i=0;i<3;i++){
for (var j=0;j<players.length;j++){
players[j]['money'] += (players[j]['increase']+j)
console.log(players[0].money + ' ___0')
console.log(players[1].money + ' ___1')
}
}
console:
11 ___0
11 ___1
22 ___0
22 ___1
32 ___0
32 ___1
答案 0 :(得分:2)
当你这样做时
players[i] = player;
您没有创建player
的副本并将其分配给players[i]
,但使players[i]
引用player
对象。因此,数组的所有元素都指向同一个对象。
您可能想要做的是克隆对象,例如
players[i] = JSON.parse(JSON.stringify(player));
注意:我提到的克隆方法只有在对象中没有函数且没有继承链时才能正常工作。您可以按照this question了解有关克隆JavaScript对象的其他方法的更多信息。