概念

分为深克隆、浅克隆

深克隆

两种方式

  1. 迭代递归
  2. 序列化反序列化

序列化、反序列化

  1. JSON.stringify()
  2. JSON.parse()

对象的存储就是序列化的过程。

结构化是指数据有从属、依赖关系的,常见的结构有链、树、图。

因此想要存储一个对象。需要:

  • 在存储之前按某种方式将对象变成一串连续数据 —— 序列化
  • 取数据时再恢复成原始的对象结构 —— 反序列化

迭代递归

  1. function isObject (obj){
  2. return (typeof obj === 'function' || typeof obj === 'object') && obj !== null;
  3. }
  4. function cloneDeep(obj){
  5. if(!isObject(obj)){
  6. return ;
  7. }
  8. const isArray = Array.isArray(obj)
  9. let cloneObj = isArray?[]:{}
  10. for(let key in obj){
  11. if(isObject(obj[key])){
  12. cloneObj[key] = cloneDeep(obj[key])
  13. }else{
  14. cloneObj[key] = obj[key]
  15. }
  16. }
  17. return cloneObj
  18. }

参考