码迷,mamicode.com
首页 > 其他好文 > 详细

关于深拷贝

时间:2018-03-24 14:30:13      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:UNC   网上   ima   inf   cti   方法   obj   简单   转化   

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

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

  技术分享图片

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

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

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

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

 

关于深拷贝

标签:UNC   网上   ima   inf   cti   方法   obj   简单   转化   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!