浅拷贝(直接理解为指针指向同一个内存、所以你修改arr1或者arr2 两者都会跟着修改)
var arr1 = [
{
name: 'arr1-1'
},
{
name: 'arr1-2'
}
]
var arr2 = [...arr1]
console.log(arr1)
console.log(arr2)
/**
[ { name: 'arr1-1' }, { name: 'arr1-2' } ]
[ { name: 'arr1-1' }, { name: 'arr1-2' } ]
*/
arr2[0].name = 'arr2-1'
console.log(arr1)
console.log(arr2)
/**
[ { name: 'arr2-1' }, { name: 'arr1-2' } ]
[ { name: 'arr2-1' }, { name: 'arr1-2' } ]
*/
深拷贝(直接理解为指针指向不同一个内存、所以你修改arr1或者arr2 两者不关联)
var arr1 = [
{
name: 'arr1-1'
},
{
name: 'arr1-2'
}
]
var arr2 = JSON.parse(JSON.stringify(arr1))
console.log(arr1)
console.log(arr2)
/**
[ { name: 'arr1-1' }, { name: 'arr1-2' } ]
[ { name: 'arr1-1' }, { name: 'arr1-2' } ]
*/
arr2[0].name = 'arr2-1'
console.log(arr1)
console.log(arr2)
/**
[ { name: 'arr1-1' }, { name: 'arr1-2' } ]
[ { name: 'arr2-1' }, { name: 'arr1-2' } ]
/*