zoukankan      html  css  js  c++  java
  • 关于深拷贝

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

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

      

      我们在实际的开发中,对象和数组通常会用于存储一些数据,如数字、字符串、布尔值、undefined、null等等。而至于方法的书写,通常会统一写在比如类似methods这样的方法属性中。如果不同的模块需要进行方法共用,你可以再写多一遍,也可以把这个方法定义为全局方法,但不会把这个方法作为一个数据去传输它。

      

      在控制台打印一下就会发现,JSON本来也就没有打算把方法作为一个数据去传输。

      说了这么多,就是想说当遇到深拷贝的时候,常用的一种方法是JSON.parse(JSON.stringify())。这种方法如果对象属性值为function,它会自动跳过。而这并不能称为是它的一个弊端,因为它也顺应了这个行业的默认规则。所以目前来说用它来实现深拷贝仍然是完美的。

  • 相关阅读:
    Lightmaping
    Android内存回收机制
    基本光照模型简单实现
    Pass的通用指令开关
    使用Depth Texture
    使用替换shader渲染
    Windows下安装Oracle12C(一)
    SpringMVC文件上传基础
    Spring集成线程池
    《经久不衰的Spring框架:@ResponseBody 中文乱码》(转)
  • 原文地址:https://www.cnblogs.com/zhangnan35/p/8638522.html
Copyright © 2011-2022 走看看