在JavaScript中,clone
通常指的是对象的复制操作。以下是对clone
相关概念的详细解释:
以下是一个使用递归函数实现深拷贝的示例:
function deepClone(obj, hash = new WeakMap()) {
if (obj === null) return null;
if (typeof obj !== 'object') return obj;
if (hash.has(obj)) return hash.get(obj); // 处理循环引用
let cloneObj = Array.isArray(obj) ? [] : {};
hash.set(obj, cloneObj);
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
cloneObj[key] = deepClone(obj[key], hash);
}
}
return cloneObj;
}
// 使用示例
const originalObj = { a: 1, b: { c: 2 } };
const clonedObj = deepClone(originalObj);
console.log(clonedObj); // 输出:{ a: 1, b: { c: 2 } }
console.log(clonedObj === originalObj); // 输出:false
console.log(clonedObj.b === originalObj.b); // 输出:false
这个递归函数可以处理循环引用,并且能够正确复制对象及其所有属性。
领取专属 10元无门槛券
手把手带您无忧上云