Javascript 创建对象的副本,然后仅从副本而不是原始副本中删除元素

Javascript 创建对象的副本,然后仅从副本而不是原始副本中删除元素,javascript,Javascript,如何使obj2与obj1相同,但不受删除的影响 当前,名称:42条目将从两个对象中删除 是否是因为吊装,即在创建obj2之前删除 变量obj1={ “姓名”:“约翰”, 年龄:42岁,, } 变量obj2=obj1 删除obj1['name'] console.logobj1 console.logobj2请使用以下命令 var obj2 = Object.assign({}, obj1) 请注意,这不是深度副本或具有所有可能属性的对象副本,它在上面所附的文档中有明确说明。您可以将ES6的扩

如何使obj2与obj1相同,但不受删除的影响

当前,名称:42条目将从两个对象中删除

是否是因为吊装,即在创建obj2之前删除

变量obj1={ “姓名”:“约翰”, 年龄:42岁,, } 变量obj2=obj1 删除obj1['name'] console.logobj1
console.logobj2请使用以下命令

var obj2 = Object.assign({}, obj1)
请注意,这不是深度副本或具有所有可能属性的对象副本,它在上面所附的文档中有明确说明。

您可以将ES6的扩展运算符用作:

了解更多有关扩展运算符的信息

你的代码有什么问题


实际上,当您将obj1分配给obj2时,obj1和obj2的参考将变得相同,即两者共享相同的内存位置地址。

分配不会产生副本。使用Object.assign进行复制,然后根据需要执行任何操作。var obj2={…obj1};如果您只是将一个对象分配给一个变量,JavaScript将通过引用复制它。这意味着两个变量都指向同一个对象。您确实需要创建一个与目标对象具有相同属性的新对象。可能重复@jonaswillms它无法处理某些对象,例如window。对于复杂的对象。我们可以使用lodash中的u.cloneDeepobj或使用JSON.parseJSON.stringifyobj克隆新对象。
let obj2 = {...obj1};