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);
因此,请阅读这些链接以更好地理解深度复制
克隆 JavaScript 对象的最优雅的方法 https://stackoverflow.com/questions/728360/most-elegant-way-to-clone-a-javascript-object
将 JavaScript 对象复制到新变量而不是通过引用? https://stackoverflow.com/questions/18359093/how-to-copy-javascript-object-to-new-variable-not-by-reference
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)