1. 深拷贝
复制出来一份数据,如果复制出来的那份数据改变不会影响原数据
常见的深拷贝:
1)使用json.stringify
JSON.parse(JSON.stringify(obj))
2)使用递归的方式实现深拷贝
function extend(data) {
if (typeof data === 'object' && data) {
let val = typeof data.length === 'number' ? [] : {}
for(let i in data) {
val[i] = extend(data[i])
}
return val
} else {
return data
}
}
2. 浅拷贝
复制出来一份数据,如果复制出来的那份数据改变原数据也会随之改变
常见的浅拷贝
(1) Object.assign()
Object.assign我们经常会用到合并对象,当然利用Object.assign性质我们也可以实现对象的拷贝。
var obj1 = {a: 1, b: 2}
var obj2 = Object.assign({}, obj1)
obj2.a = 4
console.log(obj1, obj2)
这里要注意的是Object.assign第一个参数必须是个空对象
(2) 解构赋值
var obj1 = {a: 1, b: 2}
var obj2 = {...obj1}
obj2.a = 4
console.log(obj1, obj2)
注意:
这两种拷贝有一个问题就是只能赋值一层。
如果多层的话我们要用到深拷贝。