美文网首页
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