深拷贝和浅拷贝

2018-12-09  本文已影响0人  _Alisa_

浅拷贝是拷贝一层,深层次的对象级别的就拷贝引用;深拷贝是拷贝多层,每一级别的数据都会拷贝出来;

浅拷贝(shallow copy):只复制指向某个对象的指针,而不复制对象本身,新旧对象共享一块内存;

深拷贝(deep copy):复制并创建一个一摸一样的对象,不共享内存,修改新对象,旧对象保持不变。

浅拷贝的实现

     修改拷贝后的对象的属性时,原对象也会发生改变

深拷贝的实现

   ①手动复制    

  ②object.assign({},原对象,原对象....)  参数1 目标对象   参数二  原对象,可以拷贝多个对象

   如果只有一层,会实现深拷贝,

   如果有嵌套,就是普通的浅拷贝    

③转成JSON

 用JSON.stringify把对象转成字符串,再用JSON.parse把字符串转成新的对象

缺陷是会破坏原型链,并且无法拷贝属性值为function的属性

④递归

上一篇下一篇

猜你喜欢

热点阅读