手写深拷贝

function deepClone(obj={}) {
    if(typeof obj !== 'object' || obj == null){
        // obj 是null,或者不是对象和数组,直接返回
        return obj
    }
    //初始化返回结果
    let result
    if (obj instanceof Array) {
        result = []
    } else {
        result = {}
    }
    for (let key in obj) {
        // 保证 key 不是原型的属性
        if (obj.hasOwnProperty(key)) {
            //递归调用!!!
            result[key] = deepClone(obj[key])
        }
    }
    //返回结果
    return result
}

 

posted @ 2020-12-23 17:41  `Duet`  阅读(87)  评论(0编辑  收藏  举报