0

让我们拿一个对象 d。

var d =  { 
  "e":{
    "f": 3
  }
}

现在用 {...} 复制dt并分配新的道具。

var t = {...d}
t.e._f = 4

为什么对象 d 被突变为

{
  "e": Object {
    "_f": 4,
    "f": 3
  }
}
4

1 回答 1

2

你正在做浅拷贝。{...d}相当于Object.assign({}, d)which 依次将属性复制一层深。文档

对于深度克隆,我们需要使用其他替代方法,因为 Object.assign() 会复制属性值。如果源值是对对象的引用,则它只复制该引用值。

所以t.e === d.e引用同一个对象。

于 2017-07-26T08:42:20.247 回答