浅拷贝
数组:
1. slice
// 简单数据
let arr1 = [1, 42, 5, 6]
let arr2 = arr1.slice()
arr2[0] = 100
console.log(arr1) // [1, 42, 5, 6]
console.log(arr2) // [100, 42, 5, 6]
let arr1 = [{name: 'jack'}, 42, 5, 6]
let arr2 = arr1.slice()
arr2[0].name = '不同的name'
console.log(arr1) // [{name: '不同的name''}, 42, 5, 6]
console.log(arr2) // [{name: '不同的name'}, 42, 5, 6]
2. ES6中的...
let arr5 = [0, 0, 1]
let arr6 = [...arr5]
arr5[0] = 10000
console.log(arr5) // [10000, 0, 1]
console.log(arr6) // [0, 0, 1]
let arr5 = [{name: 'jack'}, 0, 1]
let arr6 = [...arr5]
arr5[0].name = '不同的name'
console.log(arr5) // [{name:'不同的name'}, 0, 1]
console.log(arr6) // [{name: '不同的name'}, 0, 1]
3. Array.from
let arr7 = [1, 2, 3]
let arr8 = Array.from(arr7)
arr7[1] = 1000
console.log(arr7) // [1, 1000, 3]
console.log(arr8) // [1, 2, 3]
let arr7 = [1, {name:'jack'}, 3]
let arr8 = Array.from(arr7)
arr7[1].name = '不同的name'
console.log(arr7) // [1, {name: '不同的name'}, 3]
console.log(arr8) // [1, {name: '不同的name'}, 3]
对象
1. Object.assign
let person = {
name: 'xia',
age: 25,
height: 160
}
let otherPerson = Object.assign({}, person)
person.age = 30
console.log(person)
console.log(otherPerson)
深拷贝
1. JSON.parse(JSON.stringify(obj))
var deepObj= JSON.parse(JSON.stringify(obj))
2. 第三方库: