JavaScript复制数组方式

浅拷贝

    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);

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容