JavaScript 手写深拷贝实现 - 深入解析与代码示例
深拷贝是指在复制一个对象时,不仅复制了对象本身,还复制了对象内部所有引用的对象,因此所得到的新对象与原对象互不影响。以下是一个手写的深拷贝实现:
function deepCopy(obj) {
if (obj === null || typeof obj !== 'object') {
return obj; // 如果是基本类型或null,直接返回
}
let result;
if (Array.isArray(obj)) {
result = [];
for (let i = 0; i < obj.length; i++) {
result.push(deepCopy(obj[i])); // 递归复制数组元素
}
} else {
result = {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
result[key] = deepCopy(obj[key]); // 递归复制对象属性
}
}
}
return result;
}
这段代码实现了一个递归函数 deepCopy,用于复制传入的对象 obj。首先判断 obj 是否为基本类型或 null,如果是则直接返回。如果 obj 是数组,则新建一个空数组 result,并遍历 obj 的每一个元素,递归调用 deepCopy 复制元素并将其 push 到 result 中。如果 obj 是对象,则新建一个空对象 result,并遍历 obj 的每一个属性,递归调用 deepCopy 复制属性值并将其赋值给 result[key]。最后返回 result。
原文地址: https://www.cveoy.top/t/topic/lC8C 著作权归作者所有。请勿转载和采集!