编辑代码

// deepClone

function deepClone(obj = {}) {
    //判断是对象还是基本类型
    if( typeof obj !== 'object' || obj === null || obj === undefined) {
        return obj
    }
    
    let res
    //判断是否是数组
    if(obj instanceof Array) {
        res = []
    } else {
        res = {}
    }

    for(let key in obj) {
        res[key] = deepClone(obj[key])
    }

    return res
}

let user = {
    name: 'zs', 
    age: 14,
    address: {
        name: '哈哈哈'
    },
    school: {
        address: '张家界'
    }
}

//深拷贝
let user1 = deepClone(user)
//对象解构实现浅拷贝
let user2 = {...user}
// Object.assign 实现浅拷贝
let user3 = Object.assign(user,null)

console.log('user1', user1)
console.log('user2', user2)
console.log('user3', user3)

user.address.name = '呵呵呵'

console.log(user1)
console.log(user2)
console.log('user3', user3)