浅拷贝
- 复制对象时,如果属性的值为引用类型时,只复制该属性的地址。
方法
- Object.assign(target, ...sources)
- 对象解构:{...obj}
- let newArr = arr.concat(arr2)
- let newArr = arr.slice(begin, end)
深拷贝
复制对象时,如果属性的值为引用类型时,需要生成一个新的对象。
方法
- JSON.stringify 和 JSON.parse
- 递归拷贝
function deepClone(obj) {
let cloneObj = {}
for(let key in obj) { //遍历
if(typeof obj[key] ==='object') {
cloneObj[key] = deepClone(obj[key]) //是对象就再次调用该函数递归
} else {
cloneObj[key] = obj[key] //基本类型的话直接复制值
}
}
return cloneObj
}