问答详情
源自:5-1 DOM拷贝clone()

关于clone复制问题

  • 元素数据(data)内对象和数组不会被复制,将继续被克隆元素和原始元素共享。深复制的所有数据,需要手动复制每一个。

    当clone()方法的参数为true时,不是可以把数据一并复制过来吗?为什么最后一点元素数据内对象和数组又不回被复制了?这一点怎么感觉和深复制矛盾了。


提问者:T松子 2018-09-02 08:48

个回答

  • Teaocat
    2018-09-03 11:26:45
    已采纳

    深复制指的是开辟了一块新的内存并将数据拷贝一份新的到新的内存中

    使用clone(true)将继续被克隆元素和原始元素共享, 两个元素使用的是同一个数据, 也就是说改变其中一个元素数据, 另一个元素的数据也将改变,

    简单点的例子:

    a.data = [1, 2, 3];

    b = a.clone(true);

    b.data; // [1, 2, 3]

    b.data[2] = 5; // [1, 2, 5]

    a.data // [1, 2, 5]