实现对象深拷贝的四种方式

    // 1、使用json转换
    // 通过JSON.stringify()转化为字符串,再使用JSON.parse()转换为对象
    var obj = {name:'123'};
    var obj2 = JSON.parse(JSON.stringify(obj));
    // 2、解构赋值
    var obj3 = {name:'123',age:'14'};
    var obj4 = {...obj};
    // 3、使用对象合并
    // 利用Object.assign(),第一个参数必须为空对象
    var obj5 = {name:'123',age:18};
    var obj6 = Object.assign({},obj5);
  

// 利用循环和递归的方式
function deepClone(obj, newObj) {
    var newObj = newObj || {};
    for (let key in obj) {
        if (typeof obj[key] == 'object') {
            newObj[key] = (obj[key].constructor === Array) ? [] : {}
            deepClone(obj[key], newObj[key]);
        } else {
            newObj[key] = obj[key]
        }
    }
    return newObj;
}

 

 

posted @ 2021-08-26 20:01  从入门到入土  阅读(609)  评论(0编辑  收藏  举报