JavaScript实用深拷贝方法

77 阅读1分钟

原理

调用深拷贝方法,若属性为值类型,则直接返回;若属性为引用类型,则递归遍历。

deepClone(target) {
    if (typeof target === 'object' && target !== null) {
        const cloneTarget = Array.isArray(target) ? [] : {};
        for (let prop in target) {
            if (target.hasOwnProperty(prop)) {
                cloneTarget[prop] = this.deepClone(target[prop]);
            }
        }
        return cloneTarget;
    } else {
        return target;
    }
}

调用

let obj = { id: 2, list: [1, 2, 3] }
let res = this.deepClone(obj);
console.log(res, 'res');