gpt4 book ai didi

javascript - 为什么当我修改克隆的 obj 时(使用 {...}),obj 会发生变化?

转载 作者:行者123 更新时间:2023-12-01 03:19:30 24 4
gpt4 key购买 nike

让我们获取一个对象 d。

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

现在使用 {...} 将 d 复制到 t 并分配新的 prop。

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

为什么对象 d 被突变为

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

最佳答案

您正在进行浅复制。 {...d} 相当于 Object.assign({}, d),后者依次将属性复制一层深。 Docs .

For deep cloning, we need to use other alternatives because Object.assign() copies property values. If the source value is a reference to an object, it only copies that reference value.

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

关于javascript - 为什么当我修改克隆的 obj 时(使用 {...}),obj 会发生变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45321659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com