浅拷贝和深拷贝
区别
- 浅拷贝: 只复制指向某个对象的指针,不复制对象本身,新旧对象共享一块内存
- 深拷贝:复制并创建一个一模一样的对象,不会共享内存
实现浅拷贝
object.assign( target_obj, origin_obj)
const new_obj = { ...origin_obj }
实现深拷贝
简单递归实现
function deep_clone( obj ){
if( typeof obj !== 'object') return obj
let new_obj = obj instanceof Array ? [] : {}
for(let key in obj){
new_obj[key] = deep_clone(obj[key])
}
return new_obj
}
JSON实现
const new_obj = JSON.parse(JSON.stringify(obj))
loadsh函数库
_.cloneDeep(obj)