概念
深克隆
两种方式
- 迭代递归
- 序列化反序列化
序列化、反序列化
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}
