标题直接引入话题,接下来就说说,什么是浅拷贝,和深拷贝吧

1,浅拷贝和深拷贝

2,浅拷贝和深拷贝的区别

  1. 浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象/数组只是原对象的一个引用

  2. 深拷贝: 创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”

3,为什么要使用深拷贝?

  • 我们希望在改变新的数组(对象)的时候,不改变原数组(对象)

4 ,手敲深拷贝

  • 不仅拷贝第一层级,还能够拷贝数组或对象所有层级的各项值

  • 不是单独针对数组或对象,而是能够通用于数组,对象和其他复杂的JSON形式的对象

  • ##使用变量.JSON.parse(JSON.stringify(变量)

var array = [{ number: 1 },{ number: 2 },{ number: 3 }
];
var copyArray = JSON.parse(JSON.stringify(array))
copyArray[0].number = 100;
console.log(array); //  [{number: 1}, { number: 2 }, { number: 3 }]
console.log(copyArray); // [{number: 100}, { number: 2 }, { number: 3 }]
  • 递归技术高端方法
var array = [{ number: 1 },{ number: 2 },{ number: 3 }
];
function copy (obj) {var newobj = obj.constructor === Array ? [] : {};if(typeof obj !== 'object'){return;}for(var i in obj){newobj[i] = typeof obj[i] === 'object' ?copy(obj[i]) : obj[i];}return newobj
}
var copyArray = copy(array)
copyArray[0].number = 100;
console.log(array); //  [{number: 1}, { number: 2 }, { number: 3 }]
console.log(copyArray); // [{number: 100}, { number: 2 }, { number: 3 }]

什么是深拷贝,为什么要进行深拷贝,如何进行深拷贝相关推荐

  1. python深拷贝和浅拷贝的使用场景_深拷贝、浅拷贝的理解与使用场景

    什么是深拷贝.浅拷贝? 通俗解释:深拷贝是内容拷贝,浅拷贝是地址拷贝 区别点: 深拷贝会创建一个新的内存空间,拷贝的值是一样的,但是内存地址不一样. 浅拷贝只是拷贝指向原来对象的地址,使原对象的引用计 ...

  2. python中深拷贝和浅拷贝_**Python中的深拷贝和浅拷贝详解

    甚至连type其本身都是对象,type对象 Python中变量与C/C++/Java中不同,它是指对象的引用,Python是动态类型,程序运行时候,会根据对象的类型 来确认变量到底是什么类型. 单独赋 ...

  3. java 深拷贝 序列化_java 之 利用序列化实现深拷贝

    我们知道 java 在 new 一个对象的时候,其代价是比 clone 一个对象的代价是要高的,但是拷贝也不能直接用,因 java 的拷贝分为深拷贝和浅拷贝, 虽然深拷贝可以解决浅拷贝的问题,但是也会 ...

  4. java深入理解深拷贝和浅拷贝的区别 如何实现深拷贝和浅拷贝

    文章目录 一.拷贝简介 1.1 引用拷贝 1.2 对象拷贝 二.浅拷贝 2.1 定义 三.深拷贝 3.1 定义 一.拷贝简介 1.1 引用拷贝 创建一个指向对象的引用变量的拷贝 public clas ...

  5. java -- 深拷贝和浅拷贝的区别 如何实现深拷贝和浅拷贝

    文章目录 1. 深拷贝和浅拷贝的区别 1.1 浅拷贝实例 1.1.1 测试1 直接赋值 1.1.2 测试2 改变源对象的值 1.2 深拷贝实例 `这是用于深拷贝的测试类` 1.2.1 方法一: 构造函 ...

  6. python深拷贝和浅拷贝的使用场景_Python深拷贝和浅拷贝使用方法

    Python深拷贝和浅拷贝使用方法 发布时间:2020-06-06 16:52:01 来源:亿速云 阅读:182 这篇文章运用了实例代码展示Python深拷贝和浅拷贝使用方法,代码非常详细,可供感兴趣 ...

  7. python中浅拷贝和深拷贝的区别_Python中浅拷贝和深拷贝的区别

    Python中浅拷贝和深拷贝的区别 浅拷贝和深拷贝示意图 如上图,简单点说 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deepcopy 深拷贝 拷贝 ...

  8. c++深拷贝和浅拷贝

    C++中类的拷贝有两种:深拷贝,浅拷贝:当出现类的等号赋值时,即会调用拷贝函数 一:两个的区别 1 在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数--即浅拷贝,它能够完成成员的一一复制.当 ...

  9. java map to map 拷贝_java复制Map 对象(深拷贝和浅拷贝)

    java复制Map 对象(深拷贝和浅拷贝) java复制Map 对象(深拷贝和浅拷贝) 2. 通过 putAll()方法能实现浅拷贝和深拷贝, 使用Map对象只能实现浅拷贝 public static ...

  10. handle句柄 matlab_学习随笔之Matlab句柄对象深拷贝方法

    最近在使用Matlab句柄对象时,被深拷贝和浅拷贝的坑折腾得不轻,而且网上相关的应用资料也比较少,好在MathWork的帮助文档非常丰富,并且有应用案例,花了几天时间终于理出了一些头绪,以下是自己使用 ...

最新文章

  1. 实测 Mysql UUID 性能(转)
  2. 美团O2O排序解决方案——线上篇
  3. 【leetcode】Maximum Subarray
  4. hackintool怎么重建缓存_mysql表数据装满了怎么办?自增id引发的bug。
  5. Java InputStream转换为String
  6. 函数式编程和面向对象式编程_比较函数式编程,命令式编程和面向对象的编程
  7. 斜率优化dp学习笔记
  8. (USB HID) Report Descriptor 理解
  9. 【LOJ】#3088. 「GXOI / GZOI2019」旧词
  10. 深入理解Nginx 阅读笔记(一)
  11. VSCODE也可以进行gtest细粒度测试
  12. cpu功耗排行_intel酷睿10代CPU处理器功耗表
  13. Android开发,app多种语言包
  14. 怎样用电脑收发短信?
  15. OpenCL Function Qualifiers (函数限定符)
  16. 百度 翻译 api 使用
  17. SN_Write_tool 使用说明文档
  18. Qt Creator 中使用VLD检测内存泄漏
  19. Linux 安装mysql5.7.29源码安装【亲自测试】
  20. 单片机内部RAM(片上RAM) 外部RAM(片外RAM)

热门文章

  1. android 强制开启wifi,android-在ICS中强制打开WiFi和GPS
  2. Auto.js一键解密 | 一键加密手机端工具更新至2.6
  3. 袋鼠云春季生长大会圆满落幕,带来数实融合下的新产品、新方案、新实践!
  4. Mock-jmockeasymock 小凯总结
  5. 超好用!让你秒变声优博主
  6. 由{% if %} 导致的jinja2.exceptions.TemplateSyntaxError: Encountered unknown tag
  7. MySql 执行count(1)、count(*) 与 count(列名) 区别
  8. 假设你是一个报文,看路由器会如何处理你
  9. LiveData.observe在Kotlin中的优化
  10. PMP的五大过程组和十大知识领域