深度拷贝

  • Post author:
  • Post category:其他


简单数据类型的赋值操作:

赋值的是储存的数据,赋值后两个变量没有关系了。

随意操作其中一个,另一个不会改变。

引用数据类型/复杂数据类型

浅拷贝:

直接赋值 赋值的是内存地址

此时两个变量使用的内容相同,一个操作,另一个也会改变。

深拷贝:

使用循环遍历,获取复杂数据类型中储存的每一个数据信息

赋值到新的变量中

赋值后,两个变量没有任何关系

下面附上深度拷贝代码例子:

//这里是要使用for循环,就arr2中的数据写入arr3中
        var arr2 = [1,2,3,4,5,6,7,8,9];
        //创建一个空的数组
        var arr3 = [];
for(var i = 0 ; i< arr2.length; i++){
            //使用push将arr2中的单元数据,写入arr3中
            //此时  arr3,就是存储的arr2的单元数据
            arr3.push(arr2[i]);
}
 //当其中一个数组发生改变
        arr3[0] =555;
        console.log(arr2,arr3); 
        //另个一个数组不受影响:  深拷贝




注:也就是赋值的是地址还是内容



版权声明:本文为fengzi_a原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。