为什么a[0].nil的值是400,怎么设置成200,谢谢解答
a = new Array();
x = new Object();
str = "nil";
x[str] = 200;
a.push(x);
x[str] = 400;
a.push(x);
alert("1 = "+ a[0].nil);
alert("2 = "+ a[1].nil);
最佳答案
因为您将对象 x
的引用推送到数组 a
,而不是该对象的副本。
修改x[str]
的值后,指向更新对象的[0]引用。
因此在您的代码中,a[0]
、a[1]
和 x
指向同一个对象。如果您希望在代码执行的特定时刻添加 x
对象的副本,您必须克隆您的对象 x
并将克隆插入数组。
SO问题How do I correctly clone a JavaScript object?将帮助您克隆 js 对象。另见文章 "JavaScript: Passing by Value or by Reference"更好地了解 javascript 中的变量传递。
祝你好运!
关于javascript - 如何将多个对象添加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37273079/