javascript - 以正确的方式删除对象的属性

标签 javascript

var actual = { first: 1, second : 2 }
var copy = actual;

delete copy.first;

当我控制台记录副本时,它没有第一个属性,但是当我控制台记录实际时,即使该对象也没有第一个属性。

有人可以解释一下这里发生了什么吗?如何避免这种情况?

预期:

actual: { first: 1, second : 2 }
Copy: { second: 2 }

P.S:我知道我可以直接在复制对象上分配第二个属性而不进行复制,这只是一个示例。我正在处理非常大的物体。所以我必须复制然后删除属性而不影响实际对象。

谢谢

最佳答案

您可以使用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/

相关文章:

javascript - 即时更改 Controller

javascript - 隐藏菜单javascript

javascript - 一张 Canvas ,两个 dom 元素?

javascript - 如何在选择一个后立即使用 HTML 下拉列表 "select"中的值?

javascript - 每 2 项新行

javascript - 如何使用页面滚动进行背景图片切换?任何js或?

javascript - 词频函数,如果有超过1个最常用的词如何返回?

javascript - 如何使用用户脚本覆盖函数?

javascript - 如何 trim 斜线之间的字符串?

javascript - React Native - 收到 Prop 时测量组件