1. 深拷贝

  • 开辟了一个独立的空间,然后将对象指向这个地址,并且与原来的对象互不干扰

    2. 浅拷贝

  • 是指比较浅的拷贝,它与原来的变量仍然指向同一个地址,两者之间相互影响,即其中一个改变会影响另一个的改变

    3. 区别

  • 浅拷贝只是拷贝一层,更深层次对象级别的只拷贝引用。

  • 浅拷贝是拷贝的内存地址,使新对象指向拷贝对象的内存地址。深拷贝是重新开辟一块内存空间,用来存放sources对象的值。
  • 浅拷贝可以用for in 来实现,也可用es6新增方法Object.assign(target,…sources) 来实现,target为目标对象,sources为原对象(要进行拷贝的对象)
  • 浅拷贝后改变target中的值,sources也会进行改变。深拷贝不会这样
  • 深拷贝可以基于函数封装的方法来进行实现。