var actual = { first: 1, second : 2 }
var copy = actual;
delete copy.first;
当我控制台记录副本时,它没有第一个属性,但是当我控制台日志实际时,即使该对象也没有第一个属性。
有人可以解释一下这里发生了什么吗?以及如何避免这种情况?
预期:
actual: { first: 1, second : 2 }
Copy: { second: 2 }
附注:我知道我可以直接在复制对象上分配第二个属性,而无需复制,这只是一个例子。我正在处理非常大的对象。因此,我必须复制然后删除属性,而不影响实际对象。
谢谢
最佳答案
您可以使用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;
关于javascript - 以正确的方式删除对象上的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41795621/