关于 assign 的克隆问题与解决办法(深复制与浅复制)

本文探讨了在JavaScript中使用`Object.assign`进行对象复制时遇到的浅复制问题,以及为了解决这个问题提出的四种解决方案:通过JSON转换、使用lodash的深复制、jQuery的extend方法和自定义工具类的比较。文章详细分析了每种方法的优缺点和适用场景。
摘要由CSDN通过智能技术生成

目录

Object.assign

解决:

一、使用 JSON复制

二、loadsh的深复制

三、使用 Jquery中 extend

四、工具类简单比较


Object.assign

关于使用Object.assign复制时,对于引用类型里存放引用类型时,此时里面存放引用类型是浅复制。具体事例看测试:

var obj={a:1,b:{name:"cc"}}

var cloneObj=Object.assign({},obj); 

obj.a=2;

cloneObj.a  //1  对于基本数据类型则是深复制

obj.b.name="wcc";
cloneObj.b.name //wcc 对于引用类型则是浅复制(引用地址)

//数组
var arr=[1,{age:12}]
var cloneArr=Object.assign([],arr);
arr[0]=3;
cloneArr[0] //1
arr[1].age=15;
cloneArr[1].age //15  

解决:

一、使用 JSON复制

var obj={a:1,b:{name:"cc"}}

var cloneObj=JSON.Stringify(obj)
cloneObj=JSON.Parse(cloneObj) 

obj.b===cloneObj.b  //false

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值