1. 深浅拷贝主要指的是引用类型数据 Object
2. 浅拷贝
只复制引用类型数据的引用地址,当复制的值和原值发生改变时会相互影响。
3. 深拷贝
在内存中复制一份数据,当值改变时不回互相影响。
4. 深拷贝方法
1)JSON.stringfy与JSON.parse进行json字符串转换
var obj = {name: '章三', age: 18};
var obj1 = JSON.parse(JSON.stringfy(obj));
2)使用扩展运算符
var obj = {name: '章三', age: 18};
var obj1 = {...obj};
5. 手写深拷贝
function deepClone(obj) {
// 判断obj是引用类型
if(typeof obj !== 'object' || obj === null) {
return obj
}
// 声明返回值
let result;
if(obj instanceof Array) {
result = []
} else {
result = {}
}
for(let key in obj) { // 遍历递归
// 原型方法
if(obj.hasOwnProperty(key)) {
result[key] = deepClone(obj[key])
}
}
return result
}