如何正确创建一个新对象,该对象是另一个对象的副本?

我记得能够像这样的传播操作符克隆一个对象:


let obj1 = {

  key: 'value',

  key2: 'value2'  

}


let obj2 = { ...obj1 }

但是现在我意识到这不起作用,因为我正在尝试更改obj2的值,并且还更改了obj1中的值。


如果我这样做了:


obj2.key2 = 'test'

它将obj1.key2也更改为“ test”。


为什么会这样呢?


我也试着做:


let obj2 = Object.assign({}, obj1)

但我面临同样的问题。


谢谢


let obj1 = {

  key1: 'value1',

  key2: 'value2'

}


let obj2 = { ...obj1 }


obj2.key2 = 'changed key2 value'


console.log( obj1.key2 == obj2.key2 )


婷婷同学_
浏览 143回答 3
3回答

炎炎设计

Object.assign()方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。syntax:    Object.assign(target, ...sources)    target: The target object.    sources: The source object(s).    Return value: The target object.let a = {}let b = {  key: 'value',  key2: 'value2'  }Object.assign(a, b)a.key2 = '123'console.log(a.key2 == b.key2) // false// a: {key: "value", key2: "123"}// b: {key: "value", key2: "value2"}或者let b = {  key: 'value',  key2: 'value2'  }let a = Object.assign({}, b)a.key2 = '123'console.log(a.key2 == b.key2) // false// a: {key: "value", key2: "123"}// b: {key: "value", key2: "value2"}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript