什么是克隆?
来源: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回答
同学你好,问题解答如下:
1、克隆也可以叫做拷贝,通俗的说,就是把一个变量的值拷贝给另一个变量,而这两个变量虽然值相同,但是没有任何引用关系。浅克隆和深克隆是说的引用类型赋值时一种现象。
2、浅克隆的现象如下:
一个数组中的元素也是一个数组,我们可以叫它二维数组。
result.push(arr1[i])在把最后一个元素添加到result中时,因为它也是引用类型,所以是把这个元素的内存指针添加到了result中。即result中的最后一个元素和arr1中最后一个元素指向同一个引用,修改result二维数组中的元素,arr1中的二维数组也会随之改变。也就是实现了一维数组的克隆,二维数组没有实现克隆,依旧是引用关系,这就是浅克隆。
3、深克隆就是,不管数组中嵌套着几层数组,都要实现克隆。改变哪一个数组中的元素,都不会随之改变。就像上面的例子中,如果修改result二维数组时,arr1的二维数组没有改变,那么就实现了深克隆。
4、深克隆的好处就是彻底的断绝两个变量的引用关系,这样我们修改其中一个变量时,另一个变量不会受到影响。建议同学再多复习一下视频,跟着视频练习一下代码,加深印象哦。
祝学习愉快~
相似问题