深拷贝浅拷贝

99 阅读1分钟
  1. 深拷贝浅拷贝,基本用于对象属性,因为基本数据类型直接赋值就是拷贝,对象属性直接赋值他们就会指向同一个地址,因此其中一个对象的内容发生改变的话会影响另外一个对象的内容,所以就有了深拷贝浅拷贝来解决这个问题。

  2.  -  浅拷贝:只是拷贝一层,更深层次对象级别的只拷贝了地址
     -  深拷贝:层层拷贝,每一级别的数据都会拷贝
    
  3. 浅拷贝的方法:

    - 使用lodash 浅拷贝clone方法,让他们俩指向不同地址

    - 使用 Object.assign 方法

    - 使用es6语法的...扩展运算符方法     

  1. 深拷贝的方法:

    - 使用JSON.parse(JSON.stringify(obj)),缺点如果对象中有时间对象的话就会返回一个字符串而不是时间对象 当对象有方法的     - 时候会丢失

    - 使用递归的方法

      + 存在循环引用就会出现堆栈溢出       + 解决思路很简单 就是把处理好的对象==存起来==,在处理新的对象的时候,会先在这个存的地方找一找有没有处理好,如果有就直接返回就行了