JS——Window sessionStorage 属性

本文介绍了浏览器中的两种本地存储方式——localStorage和sessionStorage。localStorage用于持久化存储数据,即使关闭浏览器也会保留;而sessionStorage则用于临时保存同一窗口或标签页的数据,关闭后数据将被清除。使用它们进行数据操作的语法包括设置、获取和删除键值对,以及清空所有数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • localStorage 和 sessionStorage 属性允许在浏览器中存储 key/value 对的数据。

  • sessionStorage:用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。

  • localStorage: 只要不手动删除, 数据就会一直存在。

保存数据语法:

sessionStorage.setItem("key", "value");

读取数据语法:

var lastname = sessionStorage.getItem("key");

删除指定键的数据语法:

sessionStorage.removeItem("key");

删除所有数据:

sessionStorage.clear();```

### 实现 `localStorage` 和 `sessionStorage` 功能 在 JavaScript 中,可以利用对象或其他存储方式来模拟或补充 `localStorage` 和 `sessionStorage` 的功能。以下是具体的实现方法: #### 模拟 `localStorage` 由于 `localStorage` 是持久化的键值对存储,因此可以用一个全局变量或者更复杂的机制(如文件系统 API 或 IndexedDB)来替代它。 ```javascript // 创建一个简单的 localStorage 替代品 const customLocalStorage = (function () { let storage = {}; // 使用对象作为内存中的存储容器 return { setItem(key, value) { storage[key] = String(value); // 将值转换为字符串形式存储 }, getItem(key) { return storage.hasOwnProperty(key) ? storage[key] : null; }, removeItem(key) { if (storage.hasOwnProperty(key)) { delete storage[key]; } }, clear() { storage = {}; }, key(index) { const keys = Object.keys(storage); return index >= 0 && index < keys.length ? keys[index] : null; }, length: function () { return Object.keys(storage).length; } }; })(); ``` 此代码片段定义了一个名为 `customLocalStorage` 的对象,提供了类似于 `localStorage` 的接口[^1]。 --- #### 模拟 `sessionStorage` 对于 `sessionStorage` 来说,它的行为与 `localStorage` 类似,唯一的区别在于它是基于会话的——当浏览器标签页关闭时,数据会被清除。为了模拟这一特性,可以在每次页面加载时初始化一个新的存储空间。 ```javascript // 创建一个简单的 sessionStorage 替代品 const customSessionStorage = (function () { let storage = {}; window.addEventListener('beforeunload', () => { // 页面即将卸载时清空存储 storage = {}; }); return { setItem(key, value) { storage[key] = String(value); }, getItem(key) { return storage.hasOwnProperty(key) ? storage[key] : null; }, removeItem(key) { if (storage.hasOwnProperty(key)) { delete storage[key]; } }, clear() { storage = {}; }, key(index) { const keys = Object.keys(storage); return index >= 0 && index < keys.length ? keys[index] : null; }, length: function () { return Object.keys(storage).length; } }; })(); ``` 这段代码实现了 `sessionStorage` 的核心逻辑,并通过监听 `beforeunload` 事件,在页面关闭前清理掉所有的存储项[^2]。 --- #### 考虑跨域和安全性问题 需要注意的是,无论是真实的还是自定义的 `localStorage` 和 `sessionStorage`,它们都受限于同源策略。这意味着只有在同一协议、域名和端口号下才能访问这些存储的内容[^3]。此外,敏感信息不应直接存储在此类存储中,而应考虑使用加密技术或者其他安全措施[^4]。 --- #### 完整示例 下面是一个完整的例子,展示如何使用上述两个模块: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Custom Storage Example</title> <script> const customLocalStorage = (() => {/*...*/})(); // 插入上面的 customLocalStorage 定义 const customSessionStorage = (() => {/*...*/})(); // 插入上面的 customSessionStorage 定义 document.addEventListener("DOMContentLoaded", () => { customLocalStorage.setItem("username", "Alice"); console.log(customLocalStorage.getItem("username")); // 输出 Alice customSessionStorage.setItem("tempData", "This will be cleared on tab close."); console.log(customSessionStorage.getItem("tempData")); // 输出 This will be cleared on tab close. setTimeout(() => { customLocalStorage.removeItem("username"); console.log(customLocalStorage.getItem("username")); // 输出 null }, 5000); }); </script> </head> <body> <h1>Custom Storage Demo</h1> <p>Check the browser's developer tools console to see results.</p> </body> </html> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值