首页 > 其他 > 详细

关于深拷贝

时间:2018-03-24 14:21:07      阅读:130      评论:0      收藏:0      [点我收藏+]

  我们都知道在js中,变量分为值类型和引用类型,对于值类型来说,它在赋值是一种传值赋值,即直接原原本本拷贝一份;而对于引用类型(对象、数组、函数)来说,由于体积较大,它们在赋值时是一种传址赋值,也就是说,仅仅把一个指向引用类型的指针复制过去,这是一种浅拷贝;而要真正地拷贝引用类型本身,就要用到深拷贝。

  我在阮一峰的博客里,看到了关于他对于深拷贝的定义:

  技术分享图片

  这里为什么不提函数呢?我的理解是,函数在定义之后,如果需要使用它,直接拿过来使用就好了,不需要传址赋值;如果函数进行传值赋值,则没有意义,为什么不新定义一个函数呢?(逻辑修改是很复杂的)

  对于深拷贝的方法,网上有很多,比如说用Object.assign(),但是这种方法有一个弊端,就是只能实现一层对象的深拷贝,如果对象里面嵌套了对象,这种方法就不行了;

  还有一种说法是用JSON.parse(JSON.stringify()),这种方法虽然简单,但是它的弊端在于,如果对象属性值为function,是不能转化为JSON的。

  我提出一个方案,大家来研究研究:

 

关于深拷贝

原文:https://www.cnblogs.com/zhangnan35/p/8638522.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!