js浅拷贝和深拷贝
首先,什么是深拷贝和浅拷贝呢?
js中Array,Object都会遇到拷贝的问题,但是这两者之间又不一样,下面分开来谈一下我的理解:
数组的浅拷贝就是直接赋值方式,如:
var arr = [2,4,['s','dd']];
var arr1 = arr;
console.log(arr); //[2,4,['s','dd']]
console.log(arr1); //[2,4,['s','dd']]
arr1[2][0] = 'aa';
console.log(arr[2][0]);//aa
console.log(arr1[2][0]);//aa
我修改了arr1数组中的元素,arr数组中的值也被改变了,这并不是我们想要的;数组是一个对象,属于引用类型,通过赋值的方式给arr1的是arr的引用地址,这样就导致arr和arr1引用的是同一个对象,就像下图这个样子,改变arr/arr1任何一个,arr和arr1都会改变,因为本来就是引用的同一个对象。

数组的深拷贝:


浙公网安备 33010602011771号