手写递归深拷贝

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);
posted @   小白张先生  阅读(107)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示