JavaScript object pushed into an array
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How do I correctly clone a JavaScript object?
我有这个代码:
1 2 3 4 5 | var temp = []; var obj = {name:"1"}; temp.push(obj); obj.name ="2"; temp.push(obj); |
我所期望的是真实的:
1 | temp[0].name =="1" && temp[1].name =="2"; |
实际发生的情况:
1 | temp[0].name =="2" && temp[1].name =="2"; |
为什么会发生这种情况,我怎么能得到我所期待的?
JavaScript数组保存对对象的引用,而不是对象本身。当您将一个对象推送到数组中时,它不会创建一个新的对象,但只会将对该对象的引用(
所以在最后的obj中,temp[0]和temp1都指向同一个对象。要实际创建一个全新的对象,可以使用object.create()或jquery.extend(,obj)。不过,在您的例子中,只需使用
javascript对象是通过引用传递的。在您的例子中,只有一个对象"obj",temp[0]和temp[1]指向同一个对象。
作为对象的