什么是克隆?

来源:5-6 深克隆和浅克隆

从不学习

2021-03-12 18:09:37

问题描述:

1克隆指的是让引用类型像基础类型那样,让克隆的数组,等于原数组吗

2浅克隆的代码。

我的理解是:

    arr1 = [1,2,3,4]

    比如未经过浅克隆前 result=[1,2,3,4] ,arr1==result//false

    如果经过克隆后应该 arr1==result//true,但是结果还是false这和没克隆前没有区别啊,现在弄不清楚浅克隆是什么,有什么用处

相关代码:

<script type="text/javascript">
        var arr1 = [1, 2, 3, 4, 5]
        var result = []
        for (var i = 0; i < arr1.length; i++) {
            result.push(arr1[i])
        }
        console.log(result == arr1)
    </script>


写回答

1回答

好帮手慕夭夭

2021-03-12

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

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

2、浅克隆的现象如下:

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

http://img.mukewang.com/climg/604b453b095d007504590234.jpg

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

http://img.mukewang.com/climg/604b479d09aa7d5d09610437.jpg

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

4、深克隆的好处就是彻底的断绝两个变量的引用关系,这样我们修改其中一个变量时,另一个变量不会受到影响。建议同学再多复习一下视频,跟着视频练习一下代码,加深印象哦。

祝学习愉快~

0

0 学习 · 15276 问题

查看课程