SessionStorage适合保存本次浏览期间的临时购物车数据,关闭标签页自动清空;商品用对象数组存储,需JSON序列化/反序列化;添加商品须先读取再合并或新增;应封装增删改查及清空方法,并注意数据校验与序列化限制。

SessionStorage 适合保存购物车中“本次浏览期间”的临时商品,关闭标签页后自动清空,无需手动清理,很契合临时购物车场景。
一、用对象结构组织商品数据
别直接存单个字段,把商品信息封装成对象,方便后续扩展(比如加数量、选中状态):
- 每个商品至少包含 id(唯一标识)、name、price、quantity
- 整个购物车用数组存储:
[{id: "p1001", name: "咖啡机", price: 299, quantity: 2}, ...] - 存之前用
JSON.stringify()转字符串;取出来用JSON.parse()还原
二、添加商品时先读再写,避免覆盖
不能直接 setItem 覆盖,要先读出已有商品,判断是否已存在相同 id:
- 用
sessionStorage.getItem('cart')获取当前购物车字符串 - 若为空,初始化为空数组
[];否则JSON.parse()成数组 - 找到相同 id 的商品,只更新 quantity;没找到就
push新商品 - 最后
sessionStorage.setItem('cart', JSON.stringify(updatedCart))
三、支持增删改查和清空操作
封装几个常用方法,让业务调用更清晰:
立即学习“Java免费学习笔记(深入)”;
- addToCart(item):如上所述,合并或新增
-
updateQuantity(id, newQty):按 id 修改数量,
newQty <= 0时移除该商品 - removeItem(id):过滤掉指定 id 的商品
- getCart():返回解析后的数组,供页面渲染用
-
clearCart():直接
sessionStorage.removeItem('cart')
四、注意兼容性和边界情况
SessionStorage 在所有现代浏览器都支持,但需留意:
- 单个值大小限制约 5MB(实际因浏览器而异),普通购物车完全够用
- 不同标签页间不共享 —— 用户新开一个标签页,购物车是空的(这是预期行为)
- 存入前建议校验数据合法性(如
id和price是否存在、是否为数字),避免JSON.stringify()出错 - 不要存函数、Date 对象、undefined 等无法序列化的值


















