🍿 手写深拷贝、浅拷贝

浅拷贝

function shallowCopy(obj) {

    if(!obj || typeof obj !== "object") return
    // 根据 object 的类型判断是新建一个数组还是对象
    let newObj = Array.isArray(obj) ? [] : {}
    // 遍历 object,并且判断是 object 的属性才拷贝
    for (let k in obj) {
        if (obj.hasOwnProperty(key)){
            newObj[k] = obj[k]
        }
    }
    return newObj
}

深拷贝

function deepCopy(obj) {

    if(!obj || typeof obj !== "object") return
    // 根据 object 的类型判断是新建一个数组还是对象
    let newObj = Array.isArray(obj) ? [] : {}
    // 遍历 object,并且判断是 object 的属性才拷贝
    for (let k in obj) {
        if (obj.hasOwnProperty(key)){
             newObj[k] = typeof obj === "object" ? deepCopy(obj[k]) : obj[k]
        }
    }
    return newObj
}