美文网首页
JavaScript复制数组方式

JavaScript复制数组方式

作者: Q丁 | 来源:发表于2016-04-14 08:59 被阅读35次

浅拷贝

    var arr1 = [1, 2, 3];
    var arr2 = arr1;
    arr2[0] = 0;
    console.log(arr1);
    console.log(arr2);

这种数组拷贝方式就是浅拷贝,因为JavaScript存储对象都是存地址的,所以浅复制会导致 arr1 和 arr2 指向同一块内存地址,这样更改arr1或者arr2的时候影响的都是同一个数组。

深拷贝

深拷贝的两种方式

slice实现深拷贝

    var arr1 = [1, 2, 3];
    var arr2 = arr1.slice();
    arr2[0]=0;
    console.log(arr1);
    console.log(arr2);

concat实现深拷贝

    var arr1 = [1, 2, 3];
    var arr2 = arr1.concat();
    arr2[0]=0;
    console.log(arr1);
    console.log(arr2);

这种数组拷贝方式就是深拷贝,而深拷贝一般都是开辟一块新的内存地址,将原对象的各个属性逐个复制出去。

相关文章

网友评论

      本文标题:JavaScript复制数组方式

      本文链接:https://www.haomeiwen.com/subject/ohjglttx.html