localStorege相关api

221 阅读2分钟

📌 localStorage 相关 API 详解

localStorage 是浏览器提供的本地存储,适用于持久化数据,即使页面刷新或关闭浏览器,数据仍然存在


🔹 1. 基本 API

📝 1.1 存储数据 (setItem)

localStorage.setItem("key", "value");
  • 作用:存储一个键值对。
  • 存储的数据必须是字符串,如果是对象或数组,需要 JSON.stringify() 处理。

示例:

localStorage.setItem("username", "燕子");
localStorage.setItem("user", JSON.stringify({ name: "燕子", age: 25 }));

📖 1.2 读取数据 (getItem)

let value = localStorage.getItem("key");
  • 作用:根据键获取值,如果键不存在,返回 null

示例:

let username = localStorage.getItem("username");
console.log(username); // 燕子

let user = JSON.parse(localStorage.getItem("user"));
console.log(user.name); // 燕子
console.log(user.age);  // 25

注意

  • 存入对象时用 JSON.stringify(),取出时用 JSON.parse()
  • 如果键不存在,返回 null,要防止 JSON.parse(null) 导致错误。

🗑 1.3 删除数据 (removeItem)

localStorage.removeItem("key");
  • 作用:删除指定键的值。

示例:

localStorage.removeItem("username");
console.log(localStorage.getItem("username")); // null

🗑 1.4 清空所有数据 (clear)

localStorage.clear();
  • 作用:删除 localStorage 中的所有键值对(慎用!)。

示例:

localStorage.setItem("user", "燕子");
localStorage.setItem("token", "abc123");

localStorage.clear();

console.log(localStorage.getItem("user"));  // null
console.log(localStorage.getItem("token")); // null

📌 1.5 获取 localStorage 长度 (length)

let count = localStorage.length;
console.log(count);
  • 作用:获取 localStorage 中存储的键值对数量。

🔑 1.6 根据索引获取键名 (key)

let keyName = localStorage.key(index);
  • 作用:获取指定索引的键名。

示例:

localStorage.setItem("name", "燕子");
localStorage.setItem("age", "25");

console.log(localStorage.key(0)); // 可能是 "name" 或 "age"(顺序不固定)
console.log(localStorage.key(1)); // 可能是 "age" 或 "name"

📌 注意:浏览器不会保证存储顺序,所以索引顺序可能变化。


🔹 2. 常见应用场景

🔹 2.1 持久化存储用户信息

const user = { name: "燕子", age: 25 };
localStorage.setItem("user", JSON.stringify(user));

// 读取
const storedUser = JSON.parse(localStorage.getItem("user"));
console.log(storedUser.name); // 燕子

🔹 2.2 记录用户主题偏好

// 存储主题
localStorage.setItem("theme", "dark");

// 读取并应用主题
document.body.classList.add(localStorage.getItem("theme"));

🔹 2.3 记录购物车信息

let cart = [{ id: 1, name: "手机" }, { id: 2, name: "电脑" }];
localStorage.setItem("cart", JSON.stringify(cart));

// 读取购物车
let storedCart = JSON.parse(localStorage.getItem("cart"));
console.log(storedCart);

🔹 2.4 监听 localStorage 变化

window.addEventListener("storage", (event) => {
  console.log("存储变化:", event.key, event.oldValue, event.newValue);
});

📌 注意:这个事件 只会在 同一网站的不同标签页或窗口 中触发,单个页面内部修改 localStorage 不会触发


localStorage 限制

  1. 容量限制:大约 5MB(不同浏览器可能有所不同)。
  2. 不能存储复杂数据:只能存字符串,需要 JSON.stringify()
  3. 不能跨域访问:只能在同一域名(包括协议和端口)下访问。
  4. 不同 subdomain 不共享:例如 a.example.comb.example.com 不能共享 localStorage
  5. 无法自动过期:必须手动清除。

🔥 总结

API作用
setItem(key, value)存储数据
getItem(key)读取数据
removeItem(key)删除单个数据
clear()清空所有数据
length获取存储的键值对数量
key(index)获取指定索引的键

localStorage 适用于 长期存储,但 不适合存储敏感信息(如密码、Token),更安全的方式是 sessionStoragecookie

💡 如果需要存储带过期时间的数据,可以考虑 sessionStorage 或手动实现过期逻辑! 🚀