浅克隆和深克隆

浅克隆和深克隆

老师你好,浅克隆和深克隆的定义是什么?他们都会在什么情况下使用呢?请详细说下

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,对于你的问题解答如下:

1、克隆也可以叫做拷贝,通俗的说,就是把一个变量的值拷贝给另一个变量,而这两个变量虽然值相同,但是没有任何引用关系。浅克隆和深克隆是说的引用类型复制时的一种现象。两者定义可以参考如下解析:

(1)浅克隆:只克隆引用类型数据的第一层,如果里面的项也是引用数据类型,则不会克隆其它层,可以结合第2条以数组为示例的代码理解

(2)深克隆:克隆引用类型数据的所有层。(需要使用到递归技术,在后面的课程中会有详细的讲解

2、示例:一个数组中的元素也是一个数组,我们可以叫它二维数组。

http://img1.sycdn.imooc.com//climg/604b453b095d007504590234.jpg

result.push(arr1[i])在把最后一个元素添加到result中时,因为它也是引用类型,所以是把这个元素的内存指针添加到了result中。即result中的最后一个元素和arr1中最后一个元素指向同一个引用,修改result二维数组中的元素,arr1中的二维数组也会随之改变。也就是实现了一维数组的克隆,二维数组没有实现克隆,依旧是引用关系,这就是浅克隆。

http://img1.sycdn.imooc.com//climg/604b479d09aa7d5d09610437.jpg

深克隆就是,不管数组中嵌套着几层数组,都要实现克隆。这样不管改变哪一个数组中的元素,另一个数组都不会随之改变。就像上面的例子中,如果修改result二维数组时,arr1的二维数组没有改变,那么就实现了深克隆。

3、当你只是简单的拷贝一个数据,不关心修改其中一个变量时,另一个变量会不会受到影响时,可以使用浅克隆。

如果想要彻底的断绝两个变量的引用关系,这样我们修改其中一个变量时,另一个变量不会受到影响时,推荐使用深克隆。

具体是深克隆还是浅克隆,还需要同学结合实际的场景,灵活应用所学知识去实现效果。

祝学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师