编辑代码

//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 
console.log("Hello world!            -  js.jsrun.net ");

let obj = {
    name: 'zhangsan',
    age: 18,
    sing: function () {
        return 'sing'
    },
    depObj: {
        name: 'wangwu',
        dump: function () {
            return 'dump'
        },
        depObj1: {
            name: 'lisi',
            rap: function () {
                return 'rap'
            }
        }
    }
}

function deep (obj){
    let res = {}
    for(let key in obj){
        if(obj[key] instanceof Object){
            res[key] = deep(obj[key])
        }
        res[key] = obj[key]
    }
    return res
}

console.log('deep',deep(obj))

confirm.log('JSON:',JSON.parse(JSON.stringify(obj)))

let a = {}
console.log('assgin',Object.assign(a,obj))
obj.depObj.name = 'hahaha'
console.log(a) //a.depObj.name 也会变,所以是浅拷贝