封装工具类统一处理localStorage/sessionStorage的JSON序列化与反序列化,支持双模式切换、自动错误捕获、默认值返回及容量异常防护,提供set/get/remove/clear等安全易用方法。

直接用原生 localStorage 或 sessionStorage 写代码,每次都要手动 JSON.stringify 和 JSON.parse,还要处理 null、类型错误、存储失败等边界情况,容易出错且重复。封装一个工具类,能把这些琐碎逻辑收拢,调用时更干净、安全、可维护。
统一处理序列化与反序列化
原生 API 只接受字符串,但业务中存对象或数组很常见。封装时应在写入前自动 JSON.stringify,读取后自动 JSON.parse,并加 try/catch 捕获解析失败(比如值被手动篡改或损坏)。
- 写入时:不管传入的是对象、数组还是基本类型,都先转成字符串再存
- 读取时:尝试解析;失败则返回
null,不抛错中断流程 - 避免在业务层反复写
JSON.parse(localStorage.getItem('user')) || {}这类冗余逻辑
支持 localStorage 和 sessionStorage 双模式
很多项目既需要持久缓存(如用户偏好),也需要会话级缓存(如临时表单数据)。一个良好的封装应允许运行时指定存储类型,而不是硬编码为某一种。
用于 inference.sh 的 JavaScript/TypeScript SDK,可运行 AI 应用、构建代理、集成 150+ 模型。包名:@inferencesh/sdk(npm install),完整 TypeScript 支持。
- 构造函数或初始化方法接收
type: 'local' | 'session'参数 - 内部自动切换
window.localStorage或window.sessionStorage - 避免为两种存储分别写两套几乎相同的工具函数
提供安全的 get/set/remove/clear 方法
除了基础增删查,封装还应覆盖实际开发中高频使用的操作:
-
set(key, value):自动序列化 + 覆盖写入 -
get(key, defaultValue?):解析失败时返回默认值(不只是null) -
remove(key):删除指定项 -
clear():清空当前存储类型全部数据 - 可选扩展:
has(key)判断键是否存在,keys()获取所有键名
增加异常防护和调试友好性
浏览器存储有容量限制(通常约 5MB),满时 setItem 会静默失败。封装层应主动检测并反馈问题。
- 写入前检查是否超出配额,失败时抛出自定义错误或触发回调
- 开发环境下可记录控制台日志,例如 “Storage set failed for key ‘token’”
- 配合浏览器 DevTools 的 Application → Storage 面板,确保值能被直观查看和调试

















