1. 浅克隆和深克隆的区别

本文探讨了JavaScript中浅克隆和深克隆的区别。浅克隆只复制表面数据,两个副本相互影响,而深克隆则创建独立副本,互不影响。文章还提供了深克隆和浅克隆的实现代码示例。
摘要由CSDN通过智能技术生成

(1)、区别

浅克隆:克隆出来的数据并不能完全脱离原数据,克隆前与克隆后的变量各自的变化会相互影响。这是因为引用变量存储在栈中,而实际的对象存储在堆中。每一个引用变量都有一根指针指向其堆中的实际对象。即当一个变量值改变时,另一个变量也会跟着发生变化。
深克隆:所有元素或属性均完全复制,与原对象完全脱离,也就是说所有对于新对象的修改都不会反映到原对象中。这是因为原始变量之间的赋值操作本质上就是当一个原始变量把值赋给另一个原始变量时,只是把栈中的内容复制给另一个原始变量,在这种操作下,引用变量指向的将不再是堆中的同一块地址,因此对于新对象的修改并不会影响到原对象。

(2)深克隆代码

(3)浅克隆代码

 

<script>
        // 原数组
        var arr1 = [1, 2, 3, [4, 5]];
        // 结果数组用来存放克隆后的数组
        var result = [];
        //  遍历原数组,将每一个元素推入结果数组中
        for (i = 0; i < arr1.length; i++) {
            result.push(arr1[i]);
        }
        c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值