javascript-es6之深度克隆
在讲深度克隆之前,我们需要了解一些知识点:
判断数据类型的方式:
1、typeof返回的数据类型:String Number Boolean Undefined Object Function
2、Object.prototype.toString.call(obj)
拷贝数据:
基本数据类型:
拷贝后会生成一份新的数据,修改拷贝以后的数据不会影响原数据
对象/数组:
拷贝后不会生成新的数据,而且拷贝是引用。修改拷贝以后的数据会影响原来的数据
拷贝数据的方法:
1.直接赋值给一个变量 //浅拷贝
2.Object.assign() //浅拷贝
3.Array.prototype.concat() //浅拷贝
4.Array.prototype.slice() //浅拷贝
5.JSON.parse(JSON.stringify()) //深拷贝(深度克隆),拷贝的数据里不能有函数,处理不了
浅拷贝(对象/数组)
特点:拷贝的引用,修改拷贝的数据会影响原数据,使得原数据不安全
深拷贝(深度克隆)
特点:拷贝的时候生成新数据,修改拷贝以后的数据不会影响原数据
下面是我的深度克隆的代码
测试是否为深度克隆:
运行结果:
从图中可以看出修改了arr4对象里面的属性,arr3对象里面的属性并没有改变,即实现了深度克隆。