概念
深克隆
两种方式
- 迭代递归
- 序列化反序列化
序列化、反序列化
JSON.stringify()
JSON.parse()
对象的存储就是序列化的过程。
结构化是指数据有从属、依赖关系的,常见的结构有链、树、图。
因此想要存储一个对象。需要:
- 在存储之前按某种方式将对象变成一串连续数据 —— 序列化
- 取数据时再恢复成原始的对象结构 —— 反序列化
迭代递归
function isObject (obj){
return (typeof obj === 'function' || typeof obj === 'object') && obj !== null;
}
function cloneDeep(obj){
if(!isObject(obj)){
return ;
}
const isArray = Array.isArray(obj)
let cloneObj = isArray?[]:{}
for(let key in obj){
if(isObject(obj[key])){
cloneObj[key] = cloneDeep(obj[key])
}else{
cloneObj[key] = obj[key]
}
}
return cloneObj
}