递归实现深拷贝
function deepCopy(obj) {
let copy;
// 检查传入的参数是否为对象
if (typeof obj === 'object') {
// 如果是数组,则创建一个新的空数组作为副本
if (Array.isArray(obj)) {
copy = [];
// 遍历原数组的每个元素,并递归调用deepCopy函数来复制每个元素,并将其添加到副本数组中
obj.forEach((item) => {
copy.push(deepCopy(item));
});
} else {
// 如果是对象,则创建一个新的空对象作为副本
copy = {};
// 遍历原对象的每个属性,并递归调用deepCopy函数来复制每个属性的值,并将其添加到副本对象中
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
}
} else {
// 如果参数不是对象,则直接将其赋值给副本变量
copy = obj;
}
// 返回副本对象或数组
return copy;
}