const fn = (obj) => {
// 判断是数组还是对象
if (typeof obj === "object") {
// 数组
if (Array.isArray(obj)) {
let result = [];
for (let item of obj) {
result.push(fn(item));
}
return result;
} else {
// 对象
let result = {};
for (let prop in obj) {
result[prop] = fn(obj[prop]);
}
return result;
}
}
// 方法或者普通数据
return obj;
};
let obj1 = fn(obj);
obj1.name = "李四";
console.log(obj);
/* {
name: "宁次",
age: 20,
sister: {
name: "雏田",
age: 18,
},
arr: [1, 2, 3],
children: {
name: "张三",
age: 18,
},
}; */
console.log(obj1);
/* {
name: "李四",
age: 20,
sister: {
name: "雏田",
age: 18,
},
arr: [1, 2, 3],
children: {
name: "张三",
age: 18,
},
}; */
JavaScript 递归实现深拷贝
最新推荐文章于 2024-08-11 18:40:36 发布