浅拷贝:两个对象指向同一个内存地址,其中一个改变会影响另外一个
深拷贝:新对象指向新得内存地址,互不影响
function deepClone(obj) {
if (typeof obj !== "object") return obj;
const target = Array.isArray(obj) ? [] : {};
for (const key in obj) {
// 判断数据中key是否重复,不重复着继续逻辑
if (!hasOwnProperty.call(obj, key)) continue;
const v = obj[key];
target[key] = typeof v === "object" && v !== null ? deepClone(v) : v;
}
return target;
}