浅拷贝即修改数据, 影响原对象
浅拷贝方式
- 基本数据类型赋值
Object.assign
Array.prototype.concat
Array.prototype.slice
let obj = {username: 'wj', age: 13}
// 修改基本数据类型是浅拷贝
obj.username = 'wwj'
console.log(obj);
// Object.assign 和原有的对象是同一份
let obj2 = Object.assign(obj);
console.log(obj2);
obj.age = 14
// 修改 obj 影响 obj2. 因为它们是同一份对象
console.log(obj2);
let arr = [0, obj]
let arr2 = arr.concat()
arr[1].username = 'wj'
// 修改 arr 的元素, 也影响 arr2
console.log(arr2);
let arr3 = arr.slice()
arr[1].username = 'wwj'
// 修改 arr 的元素, 也影响 arr3
console.log(arr3);
以上均为浅拷贝