正在回答
同学你好,对于你的问题解答如下:
1、克隆也可以叫做拷贝,通俗的说,就是把一个变量的值拷贝给另一个变量,而这两个变量虽然值相同,但是没有任何引用关系。浅克隆和深克隆是说的引用类型复制时的一种现象。两者定义可以参考如下解析:
(1)浅克隆:只克隆引用类型数据的第一层,如果里面的项也是引用数据类型,则不会克隆其它层,可以结合第2条以数组为示例的代码理解
(2)深克隆:克隆引用类型数据的所有层。(需要使用到递归技术,在后面的课程中会有详细的讲解)
2、示例:一个数组中的元素也是一个数组,我们可以叫它二维数组。
result.push(arr1[i])在把最后一个元素添加到result中时,因为它也是引用类型,所以是把这个元素的内存指针添加到了result中。即result中的最后一个元素和arr1中最后一个元素指向同一个引用,修改result二维数组中的元素,arr1中的二维数组也会随之改变。也就是实现了一维数组的克隆,二维数组没有实现克隆,依旧是引用关系,这就是浅克隆。
深克隆就是,不管数组中嵌套着几层数组,都要实现克隆。这样不管改变哪一个数组中的元素,另一个数组都不会随之改变。就像上面的例子中,如果修改result二维数组时,arr1的二维数组没有改变,那么就实现了深克隆。
3、当你只是简单的拷贝一个数据,不关心修改其中一个变量时,另一个变量会不会受到影响时,可以使用浅克隆。
如果想要彻底的断绝两个变量的引用关系,这样我们修改其中一个变量时,另一个变量不会受到影响时,推荐使用深克隆。
具体是深克隆还是浅克隆,还需要同学结合实际的场景,灵活应用所学知识去实现效果。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星