- 直接赋值给另一个变量
let arrA = [0,1,2,3,4,5];
let arrB = arrA;
arrB[0]=42;
console.log(arrA); // [42,1,2,3,4,5]
- 通过 slice() 赋值给另一个变量
let arrA = [0,1,2,3,4,5];
let arrB = arrA.slice();
arrB[0]=42;
console.log(arrA); // [0,1,2,3,4,5]
// 因为 slice() 会返回一个新数组,所以 A 和 B 是相互独立的
- 对象数组的复制
let arrA = [
{prop1: "value of array A!!"},
{someProp: "also value of array A!"},
3, 4, 5
];
let arrB = arrA;
arrB[0].prop1=42;
console.log(arrA);
// [{prop1: 42}, {someProp: "also value of array A!"}, 3,4,5]
let arrA = [
{prop1: "value of array A!!"},
{someProp: "also value of array A!"},
3, 4, 5
];
let arrB = arrA.slice();
arrB[0].prop1=42;
arrB[3] = 20;
console.log(arrA);
// [{prop1: 42}, {someProp: "also value of array A!"}, 3,4,5]
// slice() 实际上是浅复制,对象是通过引用传递的,所以只有对象是公用同一个的.