克隆JavaScript对象的最有效方法是什么?我已经看到obj = eval(uneval(o));被使用,但这是非标准的,只有Firefox支持.
我做过类似的事情,obj = JSON.parse(JSON.stringify(o));但质疑效率.
我也看到了具有各种缺陷的递归复制功能.
我很惊讶没有规范的解决方案.
可能重复:
如何正确克隆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)
为什么会发生这种情况,以及我如何能得到我所期待的?