JavaScript 深拷贝函数实现解析

作者:小括号时间:2026-10-23 10:08:51浏览:388

本文介绍一个基于递归的 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。


}

作者最新文章