LocalStorage存对象需先JSON.stringify()序列化再setItem,读取时用JSON.parse()解析;须处理Date、undefined、函数等特殊值,并建议用try...catch封装操作。

LocalStorage 只能存字符串,所以存对象必须先用 JSON.stringify() 转成字符串,读取时再用 JSON.parse() 还原。跳过这一步,直接 setItem 一个对象,结果会变成 [object Object],原始数据彻底丢失。
存对象:先序列化,再 setItem
确保对象结构可被 JSON 正确处理(不含函数、undefined、Symbol、循环引用等):
- 调用
JSON.stringify(obj)得到标准 JSON 字符串 - 传给
localStorage.setItem(key, string) - 建议包一层
try...catch,防止序列化失败(比如对象里有 Date 实例嵌套太深,或存在循环引用)
取对象:先 getItem,再解析
拿到的是字符串,不是对象,必须手动解析才能使用:
- 用
localStorage.getItem(key)获取值,可能为null - 非空时再调用
JSON.parse(string) - 同样推荐加
try...catch,避免因存储损坏、格式错误导致脚本中断
特殊值要额外留意
JSON 标准不支持某些 JS 类型,它们在序列化/解析过程中会丢失或变形:
立即学习“Java免费学习笔记(深入)”;
-
Date对象会被转成 ISO 字符串(如"2026-08-20T13:23:00.000Z"),还原后是字符串,需手动new Date(str) -
undefined、函数、Symbol键或值会被忽略(直接丢弃) - 需要保留这些信息,得提前转换——例如把函数替换成标记字符串,或把
undefined统一转为null
简单可靠的操作封装示例
可以封装成两个小函数,复用更安全:
-
saveToStorage(key, obj):内部自动stringify + try/catch -
loadFromStorage(key):内部自动getItem + parse + try/catch,失败返回null


















