JavaScript 深拷贝函数实现解析
本文介绍一个基于递归的 JavaScript 深拷贝函数实现。该函数通过判断输入对象的类型(对象或函数),分别处理普通对象、数组及函数类型的克隆逻辑。代码包含防止特定属性被拷贝的参数支持,并展示了如何区分数组与对象以返回正确的结构类型。
JavaScript 深拷贝函数实现解析
定义名为 objectClone 的函数,接收两个参数:待拷贝的对象 obj 以及可选的 preventName 参数。
首先判断传入对象 obj 的类型是否为 object。
若类型为 object,则根据对象是否具有 sort 方法(通常用于数组)来初始化返回值 res,若无 sort 方法则初始化为空对象 {},否则初始化为空数组 []。
使用 for-in 循环遍历对象 obj 的所有可枚举属性。
在遍历过程中,检查当前属性名 i 是否不等于 preventName。
若属性名符合排除条件,则递归调用 objectClone 函数处理该属性的值 obj[i],并将结果赋值给返回值 res 的对应属性 res[i]。
}
完成遍历后,返回构建好的结果对象或数组 res。
若初始类型判断 obj 不是 object,则进一步判断其类型是否为 function。
若类型为 function,则通过 new 关键字实例化该函数,并返回其实例的 constructor 属性。
}
若以上条件均不满足,则直接返回原始对象 obj。
}
JS语法错误会阻止加载吗?区分SyntaxError与资源加载失败
2026-11-05 16:08:46
JavaScript常见SyntaxError语法错误排查与修复方法
2026-11-05 13:58:44
JS中slice、substring和substr截取字符串的区别
2026-11-05 13:43:47
JS 转 TS 手动迁移最佳实践:从配置 tsconfig 到消除 any 类型
2026-11-05 11:53:32
为什么JS数组push后得到的是数字而不是数组?
2026-11-05 09:59:18
