一文了解localStorage 和 sessionStorage

2024-06-13 14:36

本文主要是介绍一文了解localStorage 和 sessionStorage,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章导读:AI 辅助学习前端,包含入门、进阶、高级部分前端系列内容,当前是 JavaScript 的部分,瑶琴会持续更新,适合零基础的朋友,已有前端工作经验的可以不看,也可以当作基础知识回顾。

这篇文章瑶琴带大家学习 JavaScript 中的localStorage 和 sessionStorage的用法

localStorage 和 sessionStorage 都是 window 对象的属性。它们在全局作用域内是可访问的,可以通过 window 对象来引用它们。

1.localStorage

  1. 永久性存储:数据在页面会话结束后依然存在,直到主动删除。

  2. 容量限制:大多数浏览器为 localStorage 提供了大约5MB的存储空间。

  3. 同源限制:只有来自同一源(协议、域名和端口号都相同)的页面才能共享 localStorage 中的数据。

// 存储数据 
localStorage.setItem('username', 'JohnDoe'); // 读取数据 
let username = localStorage.getItem('username'); 
console.log(username); // 输出: JohnDoe // 删除单个数据项 
localStorage.removeItem('username'); // 清空所有数据 
localStorage.clear();

2.sessionStorage

1.会话性存储:数据只在单个会话期间可用,即只在浏览器打开的情况下有效,并且页面一旦关闭,数据就会被清除。

2.容量限制:与 localStorage 类似,大多数浏览器也为 sessionStorage 提供了大约5MB的存储空间。

3.独立性:同一源的不同页面或标签页拥有独立的 sessionStorage 空间。

// 存储数据
sessionStorage.setItem('viewedPage', 'homepage');
// 读取数据let page = sessionStorage.getItem('viewedPage');console.log(page); 
// 输出: homepage
// 页面关闭或刷新后,sessionStorage 中的数据将被清除

下面是常用方法和属性:

setItem(key, value) - 将键值对存储在存储对象中。

getItem(key) - 从一个存储对象中读取数据。

removeItem(key) - 从一个存储对象中移除指定的键值对。

clear() - 清空存储对象中的所有数据。

key(index) - 可以从存储对象中按索引顺序获取一个键。

length - 返回存储对象中的键值对数量。

注意事项:

1.存储的数据是字符串类型,如果需要存储对象或其他数据类型,需要先转换为字符串(通常使用 JSON.stringify()),读取时再转换回原来的类型(使用 JSON.parse())。

2.Web存储不是加密的,不应该用来存储敏感信息。

3.Web存储的大小限制比Cookies宽松,但仍然有限,对于大量数据的存储,应考虑使用数据库或服务器端存储。

3. 案例

1.记住用户偏好:存储用户的首选语言、主题等偏好设置。

if (!localStorage.getItem('userTheme')) { localStorage.setItem('userTheme', 'light'); 
} 
let theme = localStorage.getItem('userTheme');// 根据主题设置页面样式

2.表单自动填充:存储用户之前填写的表单数据,以便在下次访问时自动填充。

// 存储表单数据 
localStorage.setItem('formData', JSON.stringify({ name: 'John Doe', email: 'john@example.com' }));// 在表单加载时自动填充数据 
let formData = JSON.parse(localStorage.getItem('formData')); 
if (formData) { document.getElementById('name').value = formData.name; document.getElementById('email').value = formData.email; 
}

对于前端来说,这两个属性都是Web存储 API 的一部分,它们提供了一种在用户浏览器中存储数据的方式,使得数据可以在不同的页面加载之间持久化存储,初学者可以结合上面的例子自己实践。

希望今天的内容对初学前端的朋友有所帮助。也希望每一个初学者都能成为一个优秀的前端开发工程师,加油。

最后啰嗦一句,好记性不如烂笔头,希望大家在学习的过程中养成做笔记的习惯,形成自己的知识体系。

这篇关于一文了解localStorage 和 sessionStorage的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057575

相关文章

一文详解Java Condition的await和signal等待通知机制

《一文详解JavaCondition的await和signal等待通知机制》这篇文章主要为大家详细介绍了JavaCondition的await和signal等待通知机制的相关知识,文中的示例代码讲... 目录1. Condition的核心方法2. 使用场景与优势3. 使用流程与规范基本模板生产者-消费者示例

电脑密码怎么设置? 一文读懂电脑密码的详细指南

《电脑密码怎么设置?一文读懂电脑密码的详细指南》为了保护个人隐私和数据安全,设置电脑密码显得尤为重要,那么,如何在电脑上设置密码呢?详细请看下文介绍... 设置电脑密码是保护个人隐私、数据安全以及系统安全的重要措施,下面以Windows 11系统为例,跟大家分享一下设置电脑密码的具体办php法。Windo

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

一文带你搞懂Nginx中的配置文件

《一文带你搞懂Nginx中的配置文件》Nginx(发音为“engine-x”)是一款高性能的Web服务器、反向代理服务器和负载均衡器,广泛应用于全球各类网站和应用中,下面就跟随小编一起来了解下如何... 目录摘要一、Nginx 配置文件结构概述二、全局配置(Global Configuration)1. w

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

速了解MySQL 数据库不同存储引擎

快速了解MySQL 数据库不同存储引擎 MySQL 提供了多种存储引擎,每种存储引擎都有其特定的特性和适用场景。了解这些存储引擎的特性,有助于在设计数据库时做出合理的选择。以下是 MySQL 中几种常用存储引擎的详细介绍。 1. InnoDB 特点: 事务支持:InnoDB 是一个支持 ACID(原子性、一致性、隔离性、持久性)事务的存储引擎。行级锁:使用行级锁来提高并发性,减少锁竞争

PHP: 深入了解一致性哈希

前言 随着memcache、redis以及其它一些内存K/V数据库的流行,一致性哈希也越来越被开发者所了解。因为这些内存K/V数据库大多不提供分布式支持(本文以redis为例),所以如果要提供多台redis server来提供服务的话,就需要解决如何将数据分散到redis server,并且在增减redis server时如何最大化的不令数据重新分布,这将是本文讨论的范畴。 取模算法 取模运

Weex入门教程之1,了解Weex

【资料合集】Weex Conf回顾集锦:讲义PDF+活动视频! PDF分享:链接:http://pan.baidu.com/s/1hr8RniG 密码:fa3j 官方教程:https://weex-project.io/cn/v-0.10/guide/index.html 用意 主要是介绍Weex,并未涉及开发方面,好让我们开始开发之前充分地了解Weex到底是个什么。 以下描述主要摘取于

Java了解相对较多!

我是对Java了解相对较多,而对C#则是因工作需要才去看了一下,C#跟Java在语法上非常相似,而最初让我比较困惑的就是委托、事件部分,相信大多数初学者也有类似的困惑。经过跟Java的对比学习,发现这其实跟Java的监听、事件是等同的,只是表述上不同罢了。   委托+事件是观察者模式的一个典型例子,所谓的委托其实就是观察者,它会关心某种事件,一旦这种事件被触发,这个观察者就会行动。   下