美文网首页
手写 js 深拷贝

手写 js 深拷贝

作者: 存布尔 | 来源:发表于2020-12-14 14:28 被阅读0次
/**
 * 深拷贝
 * @param {Object} obj 要拷贝的对象
 */
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
}

相关文章

网友评论

      本文标题:手写 js 深拷贝

      本文链接:https://www.haomeiwen.com/subject/fdxegktx.html