深度克隆和浅层克隆有什么区别?

时间:2013-05-04 14:08:53

标签: javascript arrays clone

如果我使用splice来克隆一个数组,它会给我一个浅拷贝,缺少什么?我似乎回到了多级数组,所以如果我理解的话,它不是数组的深度。

2 个答案:

答案 0 :(得分:3)

在浅层副本中,如果数组(或对象属性)是对象的引用,则只复制引用。

var a = [{name: "Bob"}];
var b = a.slice(0);
b[0].name = "Tom";
alert(a[0].name); // "Tom"

“深度”副本确保结果包含原始数据结构中所有引用对象的新副本。执行深层复制可能会有问题,具体取决于所涉及对象的性质。

答案 1 :(得分:0)

理解深度和浅层克隆的最佳方法是:

  1. 在浅层克隆中,如果存在参考对象,则不会 连载。

  2. 在深度克隆中,对象引用和当前都是序列化。     相反,有这么多东西出现在画面中     池,对象引用等