2、还可以通过展开运算符...来实现浅拷贝
let a = {age: 1}
let b = { ...a }
a.age = 2
console.log(b.age) // 1
先说一下浅拷贝的实现方式
ES6 中 Object 的一方法,可以是来合并多个JS对象(能用来实现浅拷贝)
第一个参数拷贝的目标对象,后面的参数是拷贝的来源对象
利用扩展运算法,可以实现浅拷贝的的功能。
手写浅拷贝的思路:
将一个对象从内存中完整的拷贝出来给目标独对象,并新开辟一个全新的内存空间存放对象,新对象的修改并不会改变原对象,实现真正的分离。
最简单的深拷贝的方法,就是把一个对象序列化成为 JSON 的字符串,并将对象里面的内容转成字符串,最后用 JSON.parse() 将 JSON 字符串生成一个新的对象。
但是 JSON.stringify 实现深拷贝有些地方需要注意:
这只是简版的,利用递归的方式实现深拷贝,同 JSON.stringify 效果一样,还是有些问题没有解决
即使修改 obj.data 下的属性,也是跟之前的没有关系
cloneNode()或者叫cloneNode(false)克隆的节点复制真节点的样式,标签,属性。至于标签里的元素,事件没有复制,所以我们可以称它浅克隆。
cloneNode(true)完全把真节点的东西给复制了过来,我们称它为深克隆。也会克隆他的子节点