使用JSON.parse(JSON.stringify(obj))
是一个老技巧,我已经看到它用于深度复制对象。
它是否创造了一个真正的深层复制品。一个物体?
在性能方面,使用它是否明智?
答案 0 :(得分:3)
使用此方法深度复制对象的最大问题是对象必须是JSON可序列化的。例如,以下对象:
let obj = {
func: function() {
console.log("hello world!");
}
}
由于函数不是JSON可序列化的,因此无法正确复制。还有许多其他问题,例如循环引用。这实际上只适用于简单的普通物体,因此不是一个特别好的解决方案。我建议你查看一些像下划线或lodash这样的高性能深度复制。
答案 1 :(得分:1)
JSON.parse(JSON.stringify(obj))
大多数开发人员面临的主要问题是丢失了不属于JSON spec
的任何内容在解析循环引用时,JSON方法也会抛出异常。
那说它确实有一些优势:
至于创建一个真正的深层副本...它将是一个真正的深层副本,因为它将尽可能多地进入对象,它不会被丢弃某些信息,如上所述。