SOURCE

function shallowCopy(obj){
    if(!obj || typeof obj !== 'object') return 
    let newObj = Array.isArray(obj)? [] : {}
    for(let key in obj){
        if(obj.hasOwnProperty(key)){
            newObj[key] = obj[key]
        }
    }
    return newObj
}

function deepCopy(obj){
    if(!obj || typeof obj !== 'object') return 
    let newObj = Array.isArray(obj)? [] : {}
    for(let key in obj){
        if(obj.hasOwnProperty(key)){
            newObj[key] = typeof obj[key] === 'object'? deepCopy(obj[key]) : obj[key]
        }
    }
    return newObj
}

var obj1 = {
    a:1,
    b:{
        c:2
    }
}
let res1 = shallowCopy(obj1)
let res2 = deepCopy(obj1)
obj1.a = 2
obj1.b.c = 3
console.log(res1, 'res1')
console.log(res2, 'res2')
console 命令行工具 X clear

                    
>
console