深度拷贝和浅度拷贝

文字说明:比如一个数组(array)浅度拷贝是当数组a变量成数组b的时候,b改变里面的数组数值的时候,a也随着改变,

                  深度拷贝是当当数组a变量成数组b的时候,b改变里面的数组数值的时候,a里面的数组数组不随着改变,

那么为什么浅度拷贝会改变a的数组值而深度拷贝则不会呢?

                因为浅度拷贝指向的是同一个内存,而深度拷贝是增加了一个新的内存,所以不会影响到原来a的内存, 所 以就不会改变原来的值

例子:

浅度拷贝

               var arr=["a","b","c","d","e"];
        var Arr=arr;
        Arr[1]='h';
        console.log('arr:'+arr);  //arr的下标1的‘b’也变成了‘h’ 结果是:arr:a,h,c,d,e
        console.log("Arr:"+Arr);//结果是:Arr:a,h,c,d,e

深度拷贝

      var arr=["a","b","c","d","e"];
        var Arr=JSON.stringify(arr); //先转化为string字符串的类型
        var Brr=JSON.parse(Arr);//在解析字符串的类型
        Brr[1]='h';             //这样修改Brr中的数组的时候就不会影响到arr里面数组的值
        console.log('arr:'+arr);//结果是arr:a,h,c,d,e
        console.log("Arr:"+Brr);//结果是Arr:a,h,c,d,e

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值