让我们拿一个物品d。
var d = {
"e":{
"f": 3
}
}
现在使用{...}将d
复制到t
并分配新道具。
var t = {...d}
t.e._f = 4
为什么对象d被变异为
{
"e": Object {
"_f": 4,
"f": 3
}
}
答案 0 :(得分:2)
你正在做浅拷贝。 {...d}
相当于Object.assign({}, d)
,后者又会将属性一个级别深度复制。 Docs
对于深度克隆,我们需要使用其他替代方法,因为 Object.assign()复制属性值。如果源值是a 引用一个对象,它只复制该引用值。
所以t.e === d.e
引用相同的对象。