浅拷贝与深拷贝

119 阅读1分钟

浅拷贝

浅拷贝就是将堆中的地址复制,如下:

    var a = [1,2,3];
    var b = a;
    console.log(a,b)

这里边就是把堆中a 的地址复制给 b ,打印出来的a 和 b 都是[1,2,3]. 但是要注意如果修改数组的话,打印出来的b也会跟着改变,因为是浅拷贝,只是复制了地址,表示的是同一个数组。

深拷贝

深拷贝就是将堆中的数组在堆中原模原样的复制一个数组,如下:

   var arr =[1,2,3];
   var arr1 =[];
   if(Array.isArray(arr)){
   var res =[];
      for(var i=0;i<arr.length;i++){
        res[i]=arr[i];
      }
      arr1 = res;
   }

这里就是深拷贝,简单的来说就是复制一个一摸一样的数组,数组虽然一样,但是在堆中却是两个地址,修改其中一个,都互相不影响。