为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

婷婷同学_ 2021-04-26 09:33:04
我记得能够像这样的传播操作符克隆一个对象: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 )
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

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"}


查看完整回答
反对 回复 2021-05-06
  • 3 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信