为了账号安全,请及时绑定邮箱和手机立即绑定

关于clone复制问题

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

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


正在回答

1 回答

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

使用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]

0 回复 有任何疑惑可以回复我~
#1

T松子 提问者

谢谢,明白很多了
2018-09-03 回复 有任何疑惑可以回复我~
#2

qq_Sakuragi10_0

请教一下,既然已经设置了true,那就说明是深克隆(根据教程的意思大概是这样?),那为什么b还会和a享用同一个数据啊...?希望大佬解答,多谢!
2019-04-08 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
jQuery基础(二)—DOM篇
  • 参与学习       114013    人
  • 解答问题       590    个

jQuery第二阶段开启DOM修炼,了解创建、插入、删除与替换

进入课程

关于clone复制问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信