首页 > 编程知识 正文

手写js对象深拷贝,JS深浅拷贝实现方法

时间:2023-05-06 07:02:19 阅读:32006 作者:2515

浅副本只复制一个级别,而更深级别的对象级别副本只复制引用。 浅副本是副本的内存地址,使新对象指向复制对象的内存地址。 深拷贝是创建新的内存空间以存储sources对象的值。 浅拷贝可以通过for in实现,也可以通过es6的新方法object.assign(target, sources )实现。 如果在target是目标对象,sources是原始对象(要复制的对象)的浅副本之后更改target的值,sources也会更改。可以根据函数封装的方法实现深副本body script var obj={ id: 1,name: 'andy ',msg: { age: 18 } }; var o={}; var j={}; functionshallowcopy(newobj,oldobj ) for ) varkinoldobj ) { newobj[k]=old[k]; }shallowcopy(o,obj ); 控制台. log (o ),o ) o.id=2; console.log(obj )、obj ) /封装深度复制函数function deepcopy (new obj,oldobj ) ) /属性值为其数据类型//1 Array也可以是objectif (iteminstanceofarray ({ new obj [ k ]=[ ]; deepcopy(newobj[k],item ); }elseif(iteminstanceofobject )/3 .此值为对象newobj[k]={}; deepcopy(newobj[k],item ); } else { //4.简单数据类型newobj[k]=item; }}deepcopy(j,obj ); 控制台. log (' j ',j ); j.id=4; 控制台. log (' obj ',obj ); /script/body有不足的地方随时可以补充。

学习地址

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。