var actual = { first: 1, second : 2 }
var copy = actual;
delete copy.first;
当我控制台记录副本时,它没有第一个属性,但是当我控制日志实际时,即使该对象也没有第一个属性。
有人可以解释一下这里发生了什么吗?以及如何避免这种情况?
预期:
actual: { first: 1, second : 2 }
Copy: { second: 2 }
P.S:我知道我可以直接在复制对象上分配第二个属性而不复制,这只是一个例子。我正在处理非常大的物体。所以我必须复制然后删除属性而不影响实际对象。
谢谢
答案 0 :(得分:1)
您可以使用JSON.stringify()
,JSON.parse()
或@elclanrs建议,Object.assign()
var actual = { first: 1, second : 2 }
var copy = JSON.parse(JSON.stringify(actual));
delete copy.first;
var actual = { first: 1, second : 2 }
var copy = Object.assign({}, actual);
delete copy.first;
答案 1 :(得分:1)