localStorage封装代码

localStorage封装

JSON.stringfy()和JSON.parse()

JSON.stringfy(): 将 JS 对象转化为 JSON 字符串。

javascript 复制代码
const obj = { name: 'John', age: 30 };
const jsonString = JSON.stringify(obj);
console.log(jsonString); // {"name":"John","age":30}

JSON.parse(): 将 JSON 字符串转化为 JS 对象,键值都必须使用双引号包裹。

javascript 复制代码
const jsonString = '{"name":"John","age":30}';
const obj = JSON.parse(jsonString);
console.log(obj); // { name: 'John', age: 30 }

常用场景:

  1. 让 localStorage / sessionStorage 可以存储对象。
    localStorage / sessionStorage默认只能存储字符串,实际开发中,我们往往需要存储的数据多为对象类型,此时我们就可以在存储时利用 JSON.stringify() 将对象转为字符串,而在取缓存时,只需 JSON.parse() 转回对象即可。
  2. 实现对象深拷贝。
  3. 与后端 API 通信的时候,通常会接收到 JSON 格式的响应,JSON.parse() 可以将其解析为 JavaScript 对象,方便在客户端进行处理。

localStorage

封装:

javascript 复制代码
export class LocalStorage {
  static read = (key: string) => {
    const readObj = window?.localStorage?.getItem(key);
    try {
      return JSON.parse(readObj);
    } catch (err) {
      console.log(`READ from localStorage "${key}" - `, err);
    }
  };

  // eslint-disable-next-line @typescript-eslint/no-explicit-any
  static write = (key: string, value: any) => {
    window?.localStorage?.setItem(key, JSON.stringify(value));
  };

  static remove = (key: string) => {
    window?.localStorage?.removeItem(key);
  };
}

封装作用:

  1. localStorage 只能存字符串类型的数据,在存取的时候封装了 JS 对象和字符串之间转换。
  2. 抽象了操作:通过静态方法的形式,将对存储的读取、写入和删除操作进行了抽象和封装,使得调用方可以直接通过类的静态方法来进行操作,而无需关心底层的实现细节。提高了代码的可读性和可维护性,使得代码结构更加清晰,易于理解和维护。
  3. 提供了异常处理:在读取数据时,对 JSON 解析可能出现的异常进行了捕获和处理,并输出错误日志,避免了因为数据格式不正确而导致的程序崩溃或异常情况。

使用:

javascript 复制代码
export enum EStorageKey {
  JOINED_TOUR = 'JOINED_TOUR',
}

const storageJoinedTours = LocalStorage.read(EStorageKey.JOINED_TOUR);
相关推荐
Python大数据分析@16 分钟前
通俗的讲,网络爬虫到底是什么?
前端·爬虫·网络爬虫
不爱学英文的码字机器33 分钟前
[操作系统] 环境变量详解
开发语言·javascript·ecmascript
Lysun00137 分钟前
vue2的$el.querySelector在vue3中怎么写
前端·javascript·vue.js
jerry-891 小时前
Centos类型服务器等保测评整/etc/pam.d/system-auth
java·前端·github
工业甲酰苯胺1 小时前
深入解析 Spring AI 系列:解析返回参数处理
javascript·windows·spring
小爬菜1 小时前
Django学习笔记(启动项目)-03
前端·笔记·python·学习·django
想要打 Acm 的小周同学呀1 小时前
前端Vue2项目使用md编辑器
前端·编辑器·vue2·markdown 语法
计算机-秋大田1 小时前
基于SSM的家庭记账本小程序设计与实现(LW+源码+讲解)
java·前端·后端·微信小程序·小程序·课程设计
海的预约2 小时前
VUE之路由Props、replace、编程式路由导航、重定向
前端·vue.js·智能路由器
西柚与蓝莓3 小时前
报错:{‘csrf_token‘: [‘The CSRF token is missing.‘]}
前端·flask