【发布时间】:2016-03-11 12:57:44
【问题描述】:
所以我正在测试这个小小的和平代码:
<script>
var newData = {}, graphs = []
for(var j=0; j<2; j++){
newData["name"] = 'value '+ j
console.log(newData["name"]);
graphs.push(newData);
console.log(graphs);
}
</script>
我在 webconsole 中有以下输出:
value 0
Array [ Object ]
value 1
Array [ Object, Object ]
数组中的所有对象都具有完全相同的值:
name:"value 1"
我真的在为此苦苦挣扎,因为我没有更改任何值,并且名称仍然在同一个循环中更改。
提前感谢您的回答!
【问题讨论】:
-
您正在更改同一个对象的属性。您永远不会在任何地方创建第二个对象,只有一个对象会被多次引用。
-
为了清楚起见,我只想补充一点,在循环的第二次迭代发生之前,数组是 [{name:"value 0"}]。在第二次迭代中,它变为 [{name:"value 1"},{name:"value 1"}]。
标签: javascript arrays