为了账号安全,请及时绑定邮箱和手机立即绑定

深拷贝代码基本实现过程

标签:
JavaScript

//声明待拷贝对象 obj2

let obj2={

  age:18,

    name: "lirong",

    pattners: {

         zhangsan: {

             age: 19,

             name: "zhangsan"

         },

         lisi:{

             age: 20,

             name: "lisi",

             pattners :[ {name:'甲',age: 18}, {name:'乙'},{name:'丙'},{name:'丁'},'']

         }

    }

};


 

/**

 * 递归深拷贝对象

 * @param {*} obj 参数是对象或者数组

 */

function copyObj(obj={}){

   

    if(obj==null || typeof obj!== 'object')//判断是不是对象或者数组

    {

     return obj ;

    }  

 

    let newobj;

    if(obj.constructor === Array){//如果是数组 初始化数组形式

        newobj=[];

    }

    else{//是对象

        newobj={};

    }


    for(let key in obj){ //遍历并拷贝   如果当前节点是对象继续往下遍历

        newobj[key]= copyObj(obj[key]);

    }


    return newobj;


}


let copyobjresult=copyObj(obj2);

copyobjresult.age=22;  

console.log( obj2);//结果 obj2.age 是18

console.log( copyobjresult);//结果 copyobjresult.age 是22    两个对象互不影响,深拷贝实现


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消