gpt4 book ai didi

javascript - Ecma6, Object.assign 不做深拷贝

转载 作者:行者123 更新时间:2023-12-03 09:46:49 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How do I correctly clone a JavaScript object?

(75 个回答)


5年前关闭。



dst = { "a" : 1}
src = { "edf" : {"zyx" : "right"}}
Object.assign(dst, src)
src.edf.zyx = "wrong"
console.log(dst["edf"]["zyx"])

我希望看到 'right'作为输出,但它打印 'wrong' .

这意味着, Object.assign还没有从源到目标对复杂对象进行深度复制。我怎样才能做深拷贝?

注意:我知道 lodash.deepClone ,但我试图避免外部框架

最佳答案

首先我想告诉你它不是防弹解决方案(在日期对象的情况下)。如果您想要“正确”作为答案,这里是您的解决方案:

var dst,src = { "edf" : {"zyx" : "right"} };
dst = JSON.parse(JSON.stringify(src));
dst["a"] = 1;
src.edf.zyx = "wrong";
console.log(src, dst);

所以请阅读这些链接以更好地理解深拷贝

Most elegant way to clone a JavaScript object

Copy JavaScript object to new variable NOT by reference?

关于javascript - Ecma6, Object.assign 不做深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33796749/

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