JavaScript 手写深拷贝函数实现详解
深拷贝是指将一个对象完整地复制一份,包括其内部嵌套的对象。下面是一个手写的深拷贝函数:
function deepClone(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
let clone = Array.isArray(obj) ? [] : {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
clone[key] = deepClone(obj[key]);
}
}
return clone;
}
这个函数首先判断传入的对象是否为 null 或者不是对象类型,如果是则直接返回该对象。然后判断该对象是否为数组类型,如果是则创建一个空数组,否则创建一个空对象。接着使用 for...in 循环遍历该对象的所有属性,如果该属性是该对象自身的属性,则将其值递归地传入 deepClone 函数进行深拷贝,并将其赋值给 clone 对象的相应属性。最后返回 clone 对象。
原文地址: https://www.cveoy.top/t/topic/lC8A 著作权归作者所有。请勿转载和采集!