5月27日 01:05
localStorage 对象有哪些 API?
localStorage 是浏览器提供的持久化键值存储,数据不随页面关闭而清除。API 一共就 5 个方法和 1 个属性:
setItem(key, value):存数据。key 和 value 都是字符串。存对象需要用JSON.stringifygetItem(key):取数据。key 不存在返回nullremoveItem(key):删单个 keyclear():清空所有数据(注意:清的是当前域名下的所有 localStorage)key(index):按索引获取 key 名,用于遍历length:只读属性,返回存储的条目数
存储对象的正确姿势:
javascriptlocalStorage.setItem('user', JSON.stringify({ name: 'John', age: 30 })); const user = JSON.parse(localStorage.getItem('user'));
追问
localStorage 和 sessionStorage 有什么区别?
- 生命周期:localStorage 永久存储,sessionStorage 关闭标签页就清除
- 作用域:两者都是按域名隔离,但 sessionStorage 额外按标签页隔离
- API 完全一致
localStorage 有什么限制?
- 容量 5-10MB(不同浏览器不同)
- 只能存字符串
- 同步 API,大容量读写会阻塞主线程
- 不能存敏感信息(明文存储,XSS 可直接读取)
- 不支持过期时间,需要自己实现
Cookie 和 localStorage 怎么选?
- 需要随 HTTP 请求自动发送(如身份认证)→ Cookie
- 纯前端存储、不随请求发送 → localStorage
- 需要服务端可读 → Cookie(设置 HttpOnly 防止 XSS 读取)
- 容量超过 4KB → localStorage(Cookie 限制 4KB)