当前位置:首页 > 经验 >

深拷贝和浅拷贝的实现原理(深拷贝浅拷贝零拷贝的区别是什么)

来源:原点资讯(www.yd166.com)时间:2022-10-24 22:36:32作者:YD166手机阅读>>

用js处理数据的时候经常遇到这样一个问题,需要保留原始数据不变情况下,进行一系列数据操作,这时候需要制作一份原始数据的副本数据来进行操作

注意的是引用数据类型和基本数据类型在内存中存储方式是不一样的,只有在引用类型中才会存在深拷贝和浅拷贝的概念,而基本数据类型不会涉及到深拷贝和浅拷贝的问题

基本数据类型和引用数据类型:

基本数据类型的变量作为值保存在栈内存中

而引用数据类型的变量是作为一个指针保存在栈内存中,并且指针指向的是那个保存它数据的堆内存的地址

深拷贝和浅拷贝:

浅拷贝指在拷贝一个变量时,只复制了栈内存,没有复制堆内存

深拷贝指在拷贝一个变量时,复制了栈内存同时也复制了它的堆内存,并且重新生成新的指针

浅拷贝实例:

// 将构造好的数组赋值给另外一个空数组 var a = [1,2,3,4,5] var b = [] b = a console.log(a); console.log(b); console.log('-----'); b[0] = 9 console.log(a); console.log(b); // 输出结果 [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] ----- [9, 2, 3, 4, 5] [9, 2, 3, 4, 5] /* 得出结论: 以b = a的方式将a的值赋给b 会将两个变量同时指向一个堆内存 所以当修改b的时候 a的值也会跟着b的变化而变化 */

深拷贝实例:

如果需求是要将上面两个变量改做成深拷贝,则需要添加以下内容

var a = [1,2,3,4,5] var b = [] b = a.slice() 或 b = a.concat() 或 b = JSON.parse(JSON.stringify(a)) console.log(a); console.log(b); console.log('-----'); b[0] = 9 console.log(a); console.log(b); // 输出结果 [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] ----- [1, 2, 3, 4, 5] [9, 2, 3, 4, 5] /* 得出结论: 以上三种方法都可以使b在被赋值时 将a的堆内存一起复制 并重新生成指针 指向新的堆内存 */

应用分析:

深拷贝复制了原始数据的栈内存和堆内存

并开辟了新的内存空间

因此占用空间会更多

应当避免使用大量的深拷贝

如果要使用深拷贝

应当合理的结合浏览器内存回收机制释放内存

栏目热文

直接复制和浅拷贝和深拷贝的区别(深拷贝与浅拷贝示意图)

直接复制和浅拷贝和深拷贝的区别(深拷贝与浅拷贝示意图)

概述今天主要来看看Python中的浅拷贝和深拷贝内容,这里用一个实例来说明~需求:将一个列表的数据复制到另一个列表中。思...

2022-10-24 22:39:34查看全文 >>

高拷贝和低拷贝的区别(深拷贝浅拷贝零拷贝的区别是什么)

高拷贝和低拷贝的区别(深拷贝浅拷贝零拷贝的区别是什么)

一、如何判断我的质粒是高拷贝还是低拷贝质粒?高拷贝质粒每 1 ml LB 培养物应产生 3-5 ug DNA,而低拷贝质...

2022-10-24 22:41:09查看全文 >>

深拷贝和浅拷贝有哪些应用

深拷贝和浅拷贝有哪些应用

大家好我是发哥,本期说说C 深拷贝和浅拷贝。对于基本类型的数据以及简单的对象,它们之间的拷贝非常简单,就是按位复制内存...

2022-10-24 22:41:01查看全文 >>

谈谈你对浅拷贝和深拷贝的理解(零拷贝和深拷贝)

谈谈你对浅拷贝和深拷贝的理解(零拷贝和深拷贝)

先说下自己的理解吧,浅拷贝,即在定义一个类A,使用类似A obj; A obj1(obj);或者A obj1 = obj...

2022-10-24 22:24:54查看全文 >>

深拷贝和浅拷贝图解(深拷贝和浅拷贝的方法)

深拷贝和浅拷贝图解(深拷贝和浅拷贝的方法)

作者:南枝向暖北枝寒MA 原文链接:https://blog.csdn.net/mall_lucy/article/de...

2022-10-24 22:21:57查看全文 >>

零拷贝和非零拷贝有什么区别(零拷贝通俗理解)

零拷贝和非零拷贝有什么区别(零拷贝通俗理解)

作者 | 小林coding来源 | 小林coding(ID:CodingLin)头图 | CSDN 下载自视觉中国前言磁...

2022-10-24 22:34:18查看全文 >>

深拷贝和浅拷贝的相同点(深拷贝和浅拷贝举例)

深拷贝和浅拷贝的相同点(深拷贝和浅拷贝举例)

前言在阿里Java开发手册中,有这么一条建议:慎用 Object 的 clone 方法来拷贝对象。对象 clone 方法...

2022-10-24 22:29:41查看全文 >>

禾秆草泡水喝的功效(禾秆草图片)

禾秆草泡水喝的功效(禾秆草图片)

广东有三宝——陈皮、咸榄、禾秆草!不少“老广”都会有居家自备“三宝扎”的习惯:用陈皮包裹橄榄,再用禾秆草捆扎,置入粗盐罐...

2022-10-24 22:52:32查看全文 >>

禾秆草功效与禁忌(禾秆草有什么功能)

禾秆草功效与禁忌(禾秆草有什么功能)

广东三宝广东三宝是指:老姜、陈皮、禾秆草。前两样好理解,但是禾秆草,也就是稻草,怎么也能入选“三宝”呢?禾杆草为什么被广...

2022-10-24 22:53:23查看全文 >>

为什么稻草灰可以吃(稻草灰功效与作用)

为什么稻草灰可以吃(稻草灰功效与作用)

来源:上游新闻-重庆晨报俗话说:“民以食为天!”不同的地域特征和生活习性,烹制出不同的美味。稻草成灰,原本平凡无奇,但与...

2022-10-24 22:22:59查看全文 >>

文档排行