Hao人

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

举例说明:

 

直接将一个引用数据类型的地址,赋值给另一个变量存储的,称为浅拷贝

//浅拷贝

  var   arr1 = [ 1 , 2 , 3 , 4 ];

  var   arr2 = arr1;

  arr1[0] = "hello";

  console,log(arr2);//这时我们得到数据是[ "hello" , 2 , 3 ,4 ]

  由于我们的变量存储的是数组的内存地址,我们将arr1赋值给arr2实际上是将数组的内存地址赋值给了arr2,就是说这两个变量所对应的数据是同一个而不是说这两个变量存储的数据是一样的,

  然后我们使用变量arr1对数组进行的数据修改,最后我们输出arr2时,相应的数据也被修改了。

 

只复制 引用数据类型中的 数值 而不是 复制地址,称为深拷贝

//深拷贝

  var   arr1 = [ 1 , 2 , 3 , 4 ];

  var   arr2 =  [ ];

  所以我们可以将arr1中的数据提取出来放进一个新的数组里面
   for(var i = 0 ; i <= arr1.length-1 ; i++){
            arr2.push ( arr1 [ i ] );
        }
  然后我们修改arr1的数据:
  arr1[ 0 ] = "hello";
 
  然后我们输出数据:
  console.log(arr1);//这个数据是[ "hello" , 2 , 3 ,4 ]
  console.log(arr2);//这个数据是[ 1 , 2 , 3 , 4 ]
 
  这样两个数据之间就没有任何关系和联系,这样就完成了深拷贝。

  

posted on 2020-03-22 12:23  Hao人  阅读(182)  评论(0)    收藏  举报