前端 js 经典:深拷贝

41 阅读1分钟

浅拷贝:两个对象指向同一个内存地址,其中一个改变会影响另外一个

深拷贝:新对象指向新得内存地址,互不影响

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;
}