Javascript的深层拷贝

原创 yaohui 随笔 Javascript 143阅读 2019-04-03 12:22:12 举报
Javascript 深层拷贝的实现

在网上总是在看到JS的浅拷贝和深拷贝的文章,今天在医院没事看了一个视频也是讲深层拷贝的东西,浅拷贝和深拷贝是什么,浅拷贝和深拷贝的区别在哪里呢?这就是写文章的原因,让自己能留下自己的理解,也希望与大家交流。提出自己的问题,相互交流,相互促进。

  1. 浅层拷贝
    浅层拷贝就是对简单的没有嵌套引用类型的拷贝

上述代码可以看到对象和数组结构的浅层拷贝相对简单,浅层拷贝就是一个对象的值赋值给另一个对象,如何直接将一个对象赋值给另一个对象的话就是引用之间的赋值了。


此时 b.key的变化其实改变的是a.key 因为b.key的值是通过引用获取a.key值

  1. 深层拷贝
    此文主要是说说深层拷贝的实现,深层拷贝主要是引用类型之前的嵌套,比如对象数组,对象嵌套数组,深层拷贝一般不考虑拷贝函数。

上图可以看出浅层拷贝就不能做到。就需要通过遍历来判断是不是引用类型和具体什么类型,然后进行递归处理

上述代码可以看到通过深层拷贝后的对象的值修改并不相互影响。
这就是我深层拷贝的实现。如果有什么问题,请不吝赐教。

m88明升
评论 ( 0 )
最新评论
暂无评论

赶紧努力消灭 0 回复