简谈浅层拷贝和深层拷贝

浅层拷贝

所谓浅层拷贝指对引用类型浅层拷贝,“浅层拷贝”拷贝的是属性值的地址,所以拷贝后修改它的值,那么拷贝前的属性也会被修改,“浅层拷贝”的方法有“”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)转换成对象。
深拷贝是克隆了一个一模一样的对象,深拷贝会开辟新的内存区域,地址指向不同的地方。深拷贝后的对象与原来的对象是完全隔离,互不影响

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值