浅层拷贝
所谓浅层拷贝指对引用类型浅层拷贝,“浅层拷贝”拷贝的是属性值的地址,所以拷贝后修改它的值,那么拷贝前的属性也会被修改,“浅层拷贝”的方法有“”Object.assign“”与数组方法concat有点类似.
var obj1 = {};
var obj2 = obj1 ;
obj1.name = ‘张三’;
console.log(obj2.name);//‘张三’
console.log(obj1== obj2 );//true
var obj1 = obj2 ,这就是浅层复制,拷贝之后,obj1 ===obj12,这是浅拷贝的一种情况,直接拷贝源对象的引用,另外一种情况有点复 杂,拷贝源对象的实例,但如果其属性值为复杂的数据类型,只拷贝其内层元素的引用,
深层拷贝
所谓深层拷贝指引用类型属性值经过拷贝后修改它的值不会影响拷贝前的值,可以通过递归的方式,也可以通过转换两种格式,
转换两种格式方式如下:
1:先用JSON.stringfy(obj)转成字符串;
2:在用JSON.parse(obj)转换成对象。
深拷贝是克隆了一个一模一样的对象,深拷贝会开辟新的内存区域,地址指向不同的地方。深拷贝后的对象与原来的对象是完全隔离,互不影响