浅拷贝与深拷贝

1、浅拷贝

概念:子对象复制父对象,父子对象发生关联,两者属性值指向同一内存空间。简单来讲,就是改变其中一个对象,另一个对象也会跟着改变。

let a = [0,1,2],
b = a;
a[0] = 3;
console.log(a,b) // [3,1,2] [3,1,2]
复制代码

2、深拷贝

概念:拷贝对象各个层级的属性。简单的讲,就是复制出来的每个对象都有属于自己的内存空间,不会互相干扰。

function deepClone(obj) {
  const objClone = Array.isArray(obj) ? [] : {};
  for (const key in obj) {
    if (obj.hasOwnProperty(key)) {
      if (typeof obj[key] === "object") {
        objClone[key] = deepClone(obj[key]);
      } else {
        objClone[key] = obj[key];
      }
    }
  }
  return objClone;
}

复制代码
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享