架构爱好者
学习交流中心

深拷贝

如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。

一、实现

function deepClone(obj) {
    // if not object
    if (typeof obj !== 'object') {
        throw new TypeError('You should pass in an Object parameter')
    }

    // if null
    if (obj === null) {
        return null
    }

    // if array
    if (Array.isArray(obj)) {
        return obj.map((elem, idx) => deepClone(elem))
    }

    // if obj
    const tempObj = {}
    for (const key in obj) {
        if (obj.hasOwnProperty(key)) {
            tempObj[key] = deepClone(obj[key])
        }
    }
    return tempObj
}

二、参考

  1. 【JS】深拷贝与浅拷贝的区别,实现深拷贝的几种方法:https://www.cnblogs.com/echolun/p/7889848.html
未经允许不得转载:技术杂烩 » 深拷贝