您的当前位置:首页>全部文章>文章详情

【Javascript】localStorage和sessionStorage的使用

CrazyPanda发表于:2024-03-27 11:17:38浏览:338次TAG: #javascript #localstorage #sessionstorage

一、什么是localStorage、sessionStorage

在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage中一般浏览器支持的是5M大小,这个在不同的浏览器中localStorage会有所不同。

 

二、localStorage的优势与局限

localStorage的优势

1、localStorage拓展了cookie的4K限制

2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的

localStorage的局限

1、浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性

2、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换

3、localStorage在浏览器的隐私模式下面是不可读取的

4、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡

5、localStorage不能被爬虫抓取到

localStorage与sessionStorage的唯一一点区别就是localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空

这里我们以localStorage来分析

 

三、localStorage的使用

localStorage的浏览器支持情况:

111.jpg

这里要特别声明一下,如果是使用IE浏览器的话,那么就要UserData来作为存储,这里主要讲解的是localStorage的内容,所以userData不做过多的解释,而且以博主个人的看法,也是没有必要去学习UserData的使用来的,因为目前的IE6/IE7属于淘汰的位置上,而且在如今的很多页面开发都会涉及到HTML5\CSS3等新兴的技术,所以在使用上面一般我们不会去对其进行兼容

首先在使用localStorage的时候,我们需要判断浏览器是否支持localStorage这个属性

if(!window.localStorage){
            alert("浏览器支持localstorage");            return false;
        }else{            //主逻辑业务
        }

 

localStorage的写入,localStorage的写入有三种方法,这里就一一介绍一下

if(!window.localStorage){
            alert("浏览器支持localstorage");            return false;
        }else{            var storage=window.localStorage;            //写入a字段
            storage["a"]=1;            //写入b字段
            storage.a=1;            //写入c字段
            storage.setItem("c",3);
            console.log(typeof storage["a"]);
            console.log(typeof storage["b"]);
            console.log(typeof storage["c"]);
        }

 

运行后的结果如下:

111.png

这里要特别说明一下localStorage的使用也是遵循同源策略的,所以不同的网站直接是不能共用相同的localStorage

最后在控制台上面打印出来的结果是:

111.png

不知道各位读者有没有注意到,刚刚存储进去的是int类型,但是打印出来却是string类型,这个与localStorage本身的特点有关,localStorage只支持string类型的存储。

localStorage的读取

if(!window.localStorage){
            alert("浏览器支持localstorage");
        }else{            var storage=window.localStorage;            //写入a字段
            storage["a"]=1;            //写入b字段
            storage.a=1;            //写入c字段
            storage.setItem("c",3);
            console.log(typeof storage["a"]);
            console.log(typeof storage["b"]);
            console.log(typeof storage["c"]);            //第一种方法读取            var a=storage.a;
            console.log(a);            //第二种方法读取            var b=storage["b"];
            console.log(b);            //第三种方法读取            var c=storage.getItem("c");
            console.log(c);
        }
 

这里面是三种对localStorage的读取,其中官方推荐的是getItem\setItem这两种方法对其进行存取,不要问我这个为什么,因为这个我也不知道

我之前说过localStorage就是相当于一个前端的数据库的东西,数据库主要是增删查改这四个步骤,这里的读取和写入就相当于增、查的这两个步骤

下面我们就来说一说localStorage的删、改这两个步骤

改这个步骤比较好理解,思路跟重新更改全局变量的值一样,这里我们就以一个为例来简单的说明一下

 

if(!window.localStorage){
            alert("浏览器支持localstorage");
        }else{            var storage=window.localStorage;            //写入a字段
            storage["a"]=1;            //写入b字段
            storage.b=1;            //写入c字段
            storage.setItem("c",3);
            console.log(storage.a);            // console.log(typeof storage["a"]);            // console.log(typeof storage["b"]);            // console.log(typeof storage["c"]);            /*分割线*/
            storage.a=4;
            console.log(storage.a);
        }
 

这个在控制台上面我们就可以看到已经a键已经被更改为4了

localStorage的删除

1、将localStorage的所有内容清除

var storage=window.localStorage;
            storage.a=1;
            storage.setItem("c",3);
            console.log(storage);
            storage.clear();
            console.log(storage);
 

2、 将localStorage中的某个键值对删除

var storage=window.localStorage;
            storage.a=1;
            storage.setItem("c",3);
            console.log(storage);
            storage.removeItem("a");
            console.log(storage.a);
 

控制台查看结果

111.png

localStorage的键获取

var storage=window.localStorage;
            storage.a=1;
            storage.setItem("c",3);            for(var i=0;i<storage.length;i++){                var key=storage.key(i);
                console.log(key);
            }
 

使用key()方法,向其中出入索引即可获取对应的键

四、localStorage其他注意事项

 一般我们会将JSON存入localStorage中,但是在localStorage会自动将localStorage转换成为字符串形式

这个时候我们可以使用JSON.stringify()这个方法,来将JSON转换成为JSON字符串

示例:

if(!window.localStorage){
            alert("浏览器支持localstorage");
        }else{            var storage=window.localStorage;            var data={
                name:'xiecanyong',
                sex:'man',
                hobby:'program'
            };            var d=JSON.stringify(data);
            storage.setItem("data",d);
            console.log(storage.data);
        }
 

读取之后要将JSON字符串转换成为JSON对象,使用JSON.parse()方法

var storage=window.localStorage;            var data={
                name:'xiecanyong',
                sex:'man',
                hobby:'program'
            };            var d=JSON.stringify(data);
            storage.setItem("data",d);            //将JSON字符串转换成为JSON对象输出            var json=storage.getItem("data");            var jsonObj=JSON.parse(json);
            console.log(typeof jsonObj);
 

111.png

打印出来是Object对象

另外还有一点要注意的是,其他类型读取出来也要进行转换

 

猜你喜欢

【JavaScript】js获取父级元素
在JavaScript中,我们可以使用以下方法来获取元素的父级:&nbsp;&nbsp;1、 使用parentNode属性:可以通过访问元素的parentNode属性来获取其直接父级元素。例如:var&nbsp;element&nbsp;=&nbsp;document.getElementById(&#39;myElement&#39;); var&nbsp;parentElement&nbsp;=&nbsp;element.parentNode;2、 使用parentElement属性:与pa
发表于:2024-05-11 浏览:259 TAG:
【JavaScript】JS四舍五入保留两位小数(二)
&nbsp; &nbsp; &nbsp; &nbsp; 在Web前端开发中,大多数的项目都是需要表单支持的,而在表单中有一种比较常见的功能是要你四舍五入保留两位小数,接下来将为大家详细的介绍一下保留两位小数的六种常用方法。1.&nbsp;toFixed()方法&nbsp; &nbsp; &nbsp; &nbsp; 介绍:这是JS自带的一个方法,可以四舍五入保留指定位数的小数,并且位数不够时可以自动补0&nbsp; &nbsp; &nbsp; &nbsp; 注意:保留两位小数,将数值类型的数据改变
发表于:2024-03-12 浏览:306 TAG:
【JavaScript】JS获取时间戳秒值
方法一:使用JavaScript的Date对象的getTime()方法来获取当前时间的毫秒值,然后将其除以1000得到秒值。var&nbsp;timestamp&nbsp;=&nbsp;Math.floor(new&nbsp;Date().getTime()&nbsp;/&nbsp;1000);方法二:使用JavaScript的Date对象的getTime()方法获取当前的毫秒值,然后使用Math.floor()函数向下取整得到秒值。var&nbsp;timestamp&nbsp;=&nbsp;
发表于:2024-08-14 浏览:262 TAG:
【JavaScript】字母大小写转换的JS方法
1. toUpperCase() 方法:将字符串中的所有字母转换为大写。例如,`"hello world".toUpperCase()` 将返回 `"HELLO WORLD"`。
发表于:2024-11-16 浏览:232 TAG: #javascript
【JavaScript】JS防抖动方法
防抖动是指在事件被触发时,为了减少因为快速连续操作导致的大量事件触发,通常会设置一个延时,当事件被触发后,等待一段时间,如果在这段时间内没有新的相同事件被触发,则执行该事件的操作。在JavaScript中,防抖动通常可以通过设置定时器来实现。当事件触发时,如果已经有一个定时器在等待,则清除它并重新设置一个新的定时器。只有当定时器到期而事件也没有被触发时,事件绑定的处理函数才会执行。function&nbsp;debounce(fn,&nbsp;wait)&nbsp;{ &nbsp;&nbsp;l
发表于:2024-04-24 浏览:275 TAG:
【JavaScript】如何使用 layui 实现自适应
layui 是一个轻量级的现代前端框架,它提供了丰富的 UI 组件和强大的响应式功能。要使用 layui 实现自适应布局,可以按照以下步骤进行:1. 引用 layui 框架复制以下代码并将其粘贴到你的 HTML 页面中:&lt;script&nbsp;src=&quot;path/to/layui.js&quot;&gt;&lt;/script&gt;2. 定义自适应布局的容器创建用于放置自适应内容的容器,并为其设置 layui-container 类:&lt;div&nbsp;class=&amp;q
发表于:2024-08-08 浏览:239 TAG:
【JavaScript】5个最受欢迎的图像处理JS库
图像处理库 (IML) 用于对图像执行各种处理功能:你可以增加图像的亮度、添加饱和度或滤镜、裁剪和调整大小,以及更多有价值的功能,这些功能将帮助你完成几乎所有事情并将你的网络浏览器变成 Adob​​e Lightroom! 我们为每项重要的图像处理任务都提供了库,从简单的低级操作(例如滤镜、亮度和饱和度)到用于裁剪或图像合成的单一用途库。
发表于:2024-10-14 浏览:373 TAG: #javascript #图像 #sharp #cropper
【Javascript】CSS3和js超酷iPhone样式科学计算器插件
CalcSS3是一款非常酷的CSS3和js模仿iPhone样式科学计算器插件。该计算器插件没有使用图片,纯CSS制作。该计算器是科学型的,可以处理乘方、开方、指数、对数等复杂的数学运算。
发表于:2024-11-06 浏览:246 TAG: #javascript
【JavaScript】JS生成二维码-qrcode.js
二维码又称QRCode,是一个近几年来移动设备上很流行的一种编码方式它比传统的一维码(条形码)能存更多的信息,也能表示更多的数据类型。按照一定规律排列组成的几何图形构成,它巧妙地利用构成计算机内部逻辑...
发表于:2024-10-29 浏览:138 TAG: #二维码 #javascript
【JavaScript】纯CSS蜂巢式图片画廊效果
这是一款纯CSS蜂巢式图片画廊效果。该CSS蜂巢式图片画廊通过CSS网格布局,将图片以蜂巢的六边形进行布局,非常炫酷。
发表于:2024-11-06 浏览:245 TAG: #CSS #图像