浅拷贝与深拷贝的区别是什么?
1.深拷贝和浅拷贝都是源对象的拷贝,占用不同的内存空间。
2.不可变类型的对象对深副本和浅副本没有影响,并且最终地址值和值是相等的。
3.变量类型:
=浅拷贝:简而言之,如果b拷贝a,当b修改a时,就会看到b是否改变。如果b也改变了,这意味着它是一个浅拷贝。如果a没有改变,它就是一个深度拷贝。在本文中,我们还将简要讨论堆栈、基本数据类型和参考数据类型,因为这些概念可以更好地理解深度复制和浅层复制。让我们以一个浅拷贝为例:leta=[0,1,2,3,4],b=aconole.log文件(a===b)a[0]=1控制台.log(a,b)嗯?明明b抄了a,为什么要修改a阵,b阵也变了,在这里我不禁想。这里,我们要介绍基本数据类型和参考数据类型的概念。采访中常问,基本数据类型有哪些,数字、字符串、布尔、空、未定义五大类。引用数据类型(objectclass)包括object、array、date等。这两种类型的数据存储如下:a.基本类型-名称值存储在堆栈内存中,例如,leta=1。复制b=a时,堆栈内存将打开一个新内存。例如,此时修改a=2时,不会影响b,因为b已经消耗了自己的能量,翅膀很硬,不受a的影响。当然,leta=1,b=a。虽然b不受a的影响,但它不是深度复制,因为深度复制本身只用于更复杂的对象类型数据。b、引用数据类型名称存在于堆栈内存中,值存在于堆内存中,但堆栈内存将为堆内存中的值提供引用地址。让我们画一幅上面浅层复制示例的图:当b=a被复制时,实际复制的是a的引用地址,而不是堆中的值。当我们在a[0]=1时修改数组时,由于a和b指向同一个地址,自然b也会受到影响,这就是所谓的浅拷贝。然后,如果在堆内存中创建一个新的内存来存储b的值,就像基本类型一样,一开始就会达到深度复制的效果
浅复制意味着源对象和复制对象共享同一个实体,只是引用的变量不同(名称不同)。对其中一个对象的更改会影响另一个对象。例如,一个人的名字起初是张三,后来改成了李四,但却是同一个人。无论是张三缺胳膊缺腿,还是李四缺胳膊缺腿,都是同一个人的厄运。深度复制是指源对象和复制对象相互独立,任何对象的改变都不会影响到另一个对象。例如,一个叫张三的人被用来克隆另一个叫李四的人。不管张三缺胳膊缺腿,李四缺胳膊缺腿,都不会影响别人。典型的是值对象,如预定义的int32、double、struct、enum等类型
什么是深拷贝和浅拷贝?
一般来说,深度复制和浅层复制的区别主要在于指针(或指针)。浅层复制只是将源对象的指针(它指的是通用对象,而不仅仅是类的实例)分配给目标对象。目标指针的操作是源对象的操作,因此在许多情况下,目标对象被销毁(或跳出),然后源对象的相关部分也被销毁。深度复制是为目标对象重新分配空间,它可以从源对象的操作中分离出来。
编程里面的深拷贝和浅拷贝各是什么意思,怎么理解这两个?
你好,浅复制(shadowclone):只复制对象的基本类型,对象类型仍然属于原始引用。深度复制(deepclone):不仅复制对象的基本类,还复制原始对象中的对象。也就是说,它完全是由新对象生成的。我希望它能帮助你。
原文标题:前端深拷贝和浅拷贝的区别 浅拷贝与深拷贝的区别是什么?,如若转载,请注明出处:https://www.saibowen.com/tougao/21976.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。