//循环引用,深度递归拷贝
function deepClone(target) {
const cache = new Map(); //缓存
function _deepClone(value) {
//基本类型直接返回,函数一般也直接返回
if (value === null || typeof value !== "object") {
return value;
} else {
if (cache.has(value)) {
return cache.get(value);
}
const result = Array.isArray(value) ? [] : {};
cache.set(value, result);
for (const key in value) {
console.log("key:", key);
result[key] = _deepClone(value[key]);
}
return result;
}
}
return _deepClone(target);
}
var obj = {
arr: [],
n: 1,
};
obj.sub = obj;
var obj1;
obj1 = deepClone(obj);
console.log(obj1);
循环引用的深拷贝——递归
于 2024-03-08 14:17:19 首次发布