![[色]](http://lf-web-assets.juejin.cn/obj/juejin-web/xitu_juejin_web/img/jj_emoji_3.41d9a9a.png)
#每天一个知识点# 递归复制方法是一种深拷贝对象的方法,通过递归地复制对象的每个属性来实现。下面是一个使用递归复制方法实现深拷贝的示例代码:
function deepCopy(obj) {
if (typeof obj !== "object" || obj === null) {
return obj;
}
let copy = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
return copy;
}
在上面的代码中,我们首先判断对象是否是基本类型,如果是则直接返回该对象。否则,我们创建一个空对象或数组,并遍历原始对象的每个属性。对于每个属性,我们递归地调用 deepCopy 函数,将其值复制到新对象中。最后返回新对象。
需要注意的是,如果对象中包含循环引用,使用递归复制方法可能会导致栈溢出。因此,在实际应用中,需要谨慎处理循环引用的情况。
function deepCopy(obj) {
if (typeof obj !== "object" || obj === null) {
return obj;
}
let copy = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
return copy;
}
在上面的代码中,我们首先判断对象是否是基本类型,如果是则直接返回该对象。否则,我们创建一个空对象或数组,并遍历原始对象的每个属性。对于每个属性,我们递归地调用 deepCopy 函数,将其值复制到新对象中。最后返回新对象。
需要注意的是,如果对象中包含循环引用,使用递归复制方法可能会导致栈溢出。因此,在实际应用中,需要谨慎处理循环引用的情况。
展开
评论
1