其他分享
首页 > 其他分享> > 手写递归深拷贝

手写递归深拷贝

作者:互联网

let obj = {
job: {
address: 'shenzhen',
salary: '20k'
},
name: 'zhang',
age: 22

    }
    // 第一种(函数和正则不可以)
    // let obj1 = JSON.parse(JSON.stringify(obj))
    // obj.name = 'mm'
    // console.log(obj1);
    // console.log(obj);

    // 第二种递归拷贝
    function deepCopy (obj) {
       let copyObj = Array.isArray(obj) ? [] : {}
       Object.keys(obj).forEach(key => {
        if (obj.hasOwnProperty(key)) {
                if (obj[key] instanceof Object) {
                    copyObj[key] = deepCopy(obj[key])
                } else {
                    copyObj[key] = obj[key]
                }
            }
       })
    //    for (var key in obj) {
    //         if (obj.hasOwnProperty(key)) {
    //             if (typeof obj[key] === 'object') {
    //                 copyObj[key] = deepCopy(obj[key])
    //             } else {
    //                 copyObj[key] = obj[key]
    //             }
    //         }
    //    }
       return copyObj
    }

    let obj2 = deepCopy(obj)
    obj.name = 'yangyang'
    obj.job.address = 'shanghai'
    console.log(obj2);
    console.log(obj);

标签:obj,log,递归,copyObj,let,key,console,手写,拷贝
来源: https://www.cnblogs.com/zw100655/p/16187792.html