可能重复:
如何正确克隆JavaScript对象?
我有这个代码:
var temp = [];
var obj = {name:"1"};
temp.push(obj);
obj.name = "2";
temp.push(obj);
Run Code Online (Sandbox Code Playgroud)
我期待的是真实的:
temp[0].name == "1" && temp[1].name == "2";
Run Code Online (Sandbox Code Playgroud)
实际发生了什么:
temp[0].name == "2" && temp[1].name == "2";
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况,以及我如何能得到我所期待的?
JavaScript数组包含对象的引用,而不是对象本身.将对象推入数组时,它不会创建新对象,但它只是将对象的引用(obj也指向)放入数组中.
所以最后obj,temp [0]和temp 1都指向同一个对象.要实际创建一个全新的对象,可以使用Object.create()或jQuery.extend({},obj).虽然在你的情况下,只使用创建一个新的简单对象是很容易的var newobj = {name="2"}