javascript深度拷贝

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l598465252/article/details/78261013

javascript中,变量可以存在两种类型的值,即原始值和引用值。
简单来说,原始值就是可以通过=直接拷贝的变量;而引用值的标识符是一个指针,指向值的地址。ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。

所以,当我们需要为一个变量创建一个副本的时候,如果是引用类型就不能直接用=赋值。下面是一种深度拷贝的实现。

const deepCopy = function (target) {
    if (!target && typeof target !== 'object') {
        return;
    }

    let backup;
    if (typeof target === 'object') {
        backup = Array.isArray(target) ? [] : {};
    } else {
        return target;
    }

    for (const key in target) {
        if (typeof target[key] !== 'object') {
            backup[key] = target[key];
        } else {
            backup[key] = deepCopy(target[key]);
        }
    }
    return backup;
}

猜你喜欢

转载自blog.csdn.net/l598465252/article/details/78261013