什么是深拷贝,为什么要进行深拷贝,如何进行深拷贝
标题直接引入话题,接下来就说说,什么是浅拷贝,和深拷贝吧
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 }]
什么是深拷贝,为什么要进行深拷贝,如何进行深拷贝相关推荐
- python深拷贝和浅拷贝的使用场景_深拷贝、浅拷贝的理解与使用场景
什么是深拷贝.浅拷贝? 通俗解释:深拷贝是内容拷贝,浅拷贝是地址拷贝 区别点: 深拷贝会创建一个新的内存空间,拷贝的值是一样的,但是内存地址不一样. 浅拷贝只是拷贝指向原来对象的地址,使原对象的引用计 ...
- python中深拷贝和浅拷贝_**Python中的深拷贝和浅拷贝详解
甚至连type其本身都是对象,type对象 Python中变量与C/C++/Java中不同,它是指对象的引用,Python是动态类型,程序运行时候,会根据对象的类型 来确认变量到底是什么类型. 单独赋 ...
- java 深拷贝 序列化_java 之 利用序列化实现深拷贝
我们知道 java 在 new 一个对象的时候,其代价是比 clone 一个对象的代价是要高的,但是拷贝也不能直接用,因 java 的拷贝分为深拷贝和浅拷贝, 虽然深拷贝可以解决浅拷贝的问题,但是也会 ...
- java深入理解深拷贝和浅拷贝的区别 如何实现深拷贝和浅拷贝
文章目录 一.拷贝简介 1.1 引用拷贝 1.2 对象拷贝 二.浅拷贝 2.1 定义 三.深拷贝 3.1 定义 一.拷贝简介 1.1 引用拷贝 创建一个指向对象的引用变量的拷贝 public clas ...
- java -- 深拷贝和浅拷贝的区别 如何实现深拷贝和浅拷贝
文章目录 1. 深拷贝和浅拷贝的区别 1.1 浅拷贝实例 1.1.1 测试1 直接赋值 1.1.2 测试2 改变源对象的值 1.2 深拷贝实例 `这是用于深拷贝的测试类` 1.2.1 方法一: 构造函 ...
- python深拷贝和浅拷贝的使用场景_Python深拷贝和浅拷贝使用方法
Python深拷贝和浅拷贝使用方法 发布时间:2020-06-06 16:52:01 来源:亿速云 阅读:182 这篇文章运用了实例代码展示Python深拷贝和浅拷贝使用方法,代码非常详细,可供感兴趣 ...
- python中浅拷贝和深拷贝的区别_Python中浅拷贝和深拷贝的区别
Python中浅拷贝和深拷贝的区别 浅拷贝和深拷贝示意图 如上图,简单点说 1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deepcopy 深拷贝 拷贝 ...
- c++深拷贝和浅拷贝
C++中类的拷贝有两种:深拷贝,浅拷贝:当出现类的等号赋值时,即会调用拷贝函数 一:两个的区别 1 在未定义显示拷贝构造函数的情况下,系统会调用默认的拷贝函数--即浅拷贝,它能够完成成员的一一复制.当 ...
- java map to map 拷贝_java复制Map 对象(深拷贝和浅拷贝)
java复制Map 对象(深拷贝和浅拷贝) java复制Map 对象(深拷贝和浅拷贝) 2. 通过 putAll()方法能实现浅拷贝和深拷贝, 使用Map对象只能实现浅拷贝 public static ...
- handle句柄 matlab_学习随笔之Matlab句柄对象深拷贝方法
最近在使用Matlab句柄对象时,被深拷贝和浅拷贝的坑折腾得不轻,而且网上相关的应用资料也比较少,好在MathWork的帮助文档非常丰富,并且有应用案例,花了几天时间终于理出了一些头绪,以下是自己使用 ...
最新文章
- 实测 Mysql UUID 性能(转)
- 美团O2O排序解决方案——线上篇
- 【leetcode】Maximum Subarray
- hackintool怎么重建缓存_mysql表数据装满了怎么办?自增id引发的bug。
- Java InputStream转换为String
- 函数式编程和面向对象式编程_比较函数式编程,命令式编程和面向对象的编程
- 斜率优化dp学习笔记
- (USB HID) Report Descriptor 理解
- 【LOJ】#3088. 「GXOI / GZOI2019」旧词
- 深入理解Nginx 阅读笔记(一)
- VSCODE也可以进行gtest细粒度测试
- cpu功耗排行_intel酷睿10代CPU处理器功耗表
- Android开发,app多种语言包
- 怎样用电脑收发短信?
- OpenCL Function Qualifiers (函数限定符)
- 百度 翻译 api 使用
- SN_Write_tool 使用说明文档
- Qt Creator 中使用VLD检测内存泄漏
- Linux 安装mysql5.7.29源码安装【亲自测试】
- 单片机内部RAM(片上RAM) 外部RAM(片外RAM)
热门文章
- android 强制开启wifi,android-在ICS中强制打开WiFi和GPS
- Auto.js一键解密 | 一键加密手机端工具更新至2.6
- 袋鼠云春季生长大会圆满落幕,带来数实融合下的新产品、新方案、新实践!
- Mock-jmockeasymock 小凯总结
- 超好用!让你秒变声优博主
- 由{% if %} 导致的jinja2.exceptions.TemplateSyntaxError: Encountered unknown tag
- MySql 执行count(1)、count(*) 与 count(列名) 区别
- 假设你是一个报文,看路由器会如何处理你
- LiveData.observe在Kotlin中的优化
- PMP的五大过程组和十大知识领域