前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >温故知新-JS深拷贝

温故知新-JS深拷贝

作者头像
用户3258338
发布2020-11-09 15:35:28
3820
发布2020-11-09 15:35:28
举报

天马行空、脚踏实地~

最近学到的深拷贝的简单写法:

function deepClone(obj){
    // typeof null的结果是object,所以单独拿出来
    if(obj == null ){  
        console.log('请传入对象类型的数据')
        return;
    };
    //如果不是object类型直接返回
    if( typeof obj !== 'object'){ 
        return obj;
    }
    // 这里要注意一下 ,生成一个空newobj
    let newObj = new obj.constructor();
    for(let key in obj){
        newObj[key] = deepClone(obj[key]);
    }
    return newObj;
}
var a = {name: '张三'};
let c = [1,2,4];
var a1 = deepClone(a);
var c1 = deepClone(c);
console.log('a',a); // {name: '张三'};
console.log('c',c); //[1,2,4] 
console.log('c1',c1);  //[1,2,4] 
a.name= '李四'
c[0] = 0;
console.log('a',a); // {name: '李四'};
console.log('c',c); //[0,2,4]
console.log('c1',c1); // 还应该是[1,2,4]

var d = {name:'张三',detail:{age: 14}}
var d1 = deepClone(d);
console.log('d',d); // {name:'张三',detail:{age: 14}}
console.log('d1',d1);  //{name:'张三',detail:{age: 14}}
d.detail.age = 15
console.log('d',d); // {name:'张三',detail:{age: 15}}
console.log('d1',d1);  //{name:'张三',detail:{age: 14}}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 女程序员的日常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档