淺拷貝
var arr1 = [1, 2, 3];
var arr2 = arr1;
arr2[0] = 0;
console.log(arr1);
console.log(arr2);
這種數(shù)組拷貝方式就是淺拷貝俩块,因為JavaScript存儲對象都是存地址的,所以淺復制會導致 arr1 和 arr2 指向同一塊內(nèi)存地址吁系,這樣更改arr1或者arr2的時候影響的都是同一個數(shù)組坚洽。
深拷貝
深拷貝的兩種方式
slice實現(xiàn)深拷貝
var arr1 = [1, 2, 3];
var arr2 = arr1.slice();
arr2[0]=0;
console.log(arr1);
console.log(arr2);
concat實現(xiàn)深拷貝
var arr1 = [1, 2, 3];
var arr2 = arr1.concat();
arr2[0]=0;
console.log(arr1);
console.log(arr2);
這種數(shù)組拷貝方式就是深拷貝,而深拷貝一般都是開辟一塊新的內(nèi)存地址猾浦,將原對象的各個屬性逐個復制出去。