Ecma6,Object.assign 不做深度复制
Ecma6, Object.assign doesn't do a deep copy
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 对象的最优雅方式
将 JavaScript 对象复制到新变量不是通过引用?
相关文章:
- 使用Clipboard.js复制span文本
- ZeroClipboard-在复制之前添加到值
- 如何对映射插件创建的敲除对象进行深度复制
- NodeJS中的高效深度复制
- javascript中嵌套对象的深度复制数组
- lodash:深度复制对象,但不是所有属性
- 用javascript将一个对象数组复制到另一个数组中(深度复制)
- 在 Angular 2 + TypeScript 中深度复制数组
- 在 Javascript 中,在执行深度复制时,由于属性为“this”,我如何避免循环
- Angular.copy() 不是深度复制引用的数组
- javascript对象的深度克隆/复制
- 如何防止jQuery扩展深度副本复制我的一些自定义属性
- Ecma6,Object.assign 不做深度复制
- 结构化克隆算法与深度复制算法有何不同?
- 如何在javascript中深度复制对象作为对象而不是数组
- 如何在深度复制时深层复制闭合对象(私有对象)
- 如何在JavaScript中深度复制自定义对象
- 如何在javascript中进行深度复制
- 使用 Array.prototype.slice() 深度复制数组
- 深度复制可观察数组