localStorage详解

举报
搞前端的半夏 发表于 2022/06/30 21:52:56 2022/06/30
【摘要】 介绍localStorage是HTML5新加入的,用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。我们可以通过window对象来访问本地存储对象,它允许我们添加、修改或删除本地存储的数据。使用 localStorag...

介绍

localStorage是HTML5新加入的,用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。我们可以通过window对象来访问本地存储对象,它允许我们添加、修改或删除本地存储的数据。

使用 localStorage 存储数据时,此数据不会过期并在不同会话中持续存在。

数据通过键值对存储,并且始终采用 UTF-16(字符串)格式存储。

它是如何使用的?

在访问Storage类型的对象时,localStorage 为我们提供了一系列方法来存储、修改或删除存储的项目。我们将在下面看到它们:

setitem()

接收键值对并将它们添加到本地存储。如果键已经存在,它将更新其值。

const notas = [
  { id: 1, cuerpo: "Leer libro: Malestar en la cultura,Ensayo sobre la ceguera, Clean Code..." },
  { id: 2, cuerpo: "Practicar higiene del sueño: Al acercarse la hora de dormir, apagar/atenuar luces, no usar el móvil, reducir la temperatura y relajarse." },
  { id: 3, cuerpo: "Reducir fuentes de recompensa inmediatas: Móvil, juegos, masturbación etc..." }
];

const texto = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin efficitur eu justo sollicitudin tempor. "


localStorage.setItem("notas",JSON.stringify(notas));
localStorage.setItem("texto",texto);

本地存储.png

这里我们有一个对象数组(“notes”对象数组)和一个文本字符串(变量“text”),调用的本地存储中localStorage.setItem(),接收一个键作为第一个参数,一个值作为第二个参数。

由于信息必须以字符串格式存储,这里我们使用JSON.stringify( ) 将我们的数组转换为JSONnotas表示法并将其作为函数的第二个参数传递。setItem()

key()

此方法接收一个键号“n”,并将返回本地存储中第 n 个键的名称。

console.log(localStorage.key(0))
console.log(localStorage.key(1))

localStorage4.png

getItem()

不像key(), getItem接收一个键名(字符串而不是数字)并返回对应键的值。

如果我们想检索存储在 localStorage 中的数据,我们应该使用getItem(),但请记住数据存储在一个字符串中(在这种情况下,notes 是 JSON 格式),所以我们应该使用JSON.parse()来转换它解析结构,JavaScript 中的有效数据。

const arrayNotas = JSON.parse(localStorage.getItem("notas"));

console.log(arrayNotas);

本地存储2.png

通过将其转换为 JavaScript 数组,我们可以将其存储在变量中。

如果我们没有进行转换,则会以存储数组的 JSON 格式返回一个字符串,因此我们将无法访问所述数组的索引,也无法访问它们各自的属性(如果它们是对象)。

localStorage3.png

removeItem()

接收要从本地存储中删除的键的名称(字符串)作为参数。

localStorage.removeItem("texto");

什么时候使用它?

使用 sessionStorage,数据只会保存到窗口或选项卡关闭。使用 localStorage ,数据会一直保留到用户手动清除浏览器缓存或 Web 应用程序清除数据为止。因此,每当我们希望数据持久化时,我们都可以使用 localStorage。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。