我记得能够像这样的传播操作符克隆一个对象: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"}
添加回答
举报
0/150
提交
取消