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

标签 javascript

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/

相关文章:

javascript - Babel 可以在生成的代码中包含 regeneratorRuntime 依赖项吗?

javascript - 增强jQuery Mobile菜单系统

javascript - 如何从 app.js 运行功能关闭 ionic 弹出窗口?

javascript - 本地存储的控制台脚本问题

javascript - 元素很少的 React Native 无限滚动问题

javascript - 在javascript中为图像创建新标签

javascript - 如何从 webview 使用 UIImagePickerController

javascript - CKEditor:如何在DIV中强制P?

javascript - 意外的标识符修复

javascript - react redux搜索过滤器不显示过滤的内容?