JavaScript 深拷贝
export function deepCopy(obj1) {
const obj2 = Array.isArray(obj1) ? [] : {};
if (obj1 && typeof obj1 === "object") {
for (let i in obj1) {
let prop = obj1[i]; // 避免相互引用造成死循环,如obj1.a=obj1
if (prop === obj1) {
continue;
}
// 仅拷贝对象自身属性
if (obj1.hasOwnProperty(i)) {
// 如果子属性为引用数据类型,递归复制
if (prop && typeof prop === "object") {
obj2[i] = deepCopy(prop);
} else {
// 如果是基本数据类型,只是简单的复制
obj2[i] = prop;
}
}
}
}
return obj2;
}