原理
调用深拷贝方法,若属性为值类型,则直接返回;若属性为引用类型,则递归遍历。
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');