sessionStorage、localStorage用法总结

宋嬷嬷
• 阅读 6278

在工作中使用sessionStorage存储数据时,发现sessionStorage无法直接存储数组和对象,如存入对象则显示为"[object Object]",对此作下记录,重新温习sessionStorage和localStorage

html5 中的 web Storage 包括了两种存储方式:sessionStorage 和 localStorage

共同点

存储大小为5MB,都保存在客户端,不与服务器进行交互通信,有相同的Web API

sessionStorage、localStorage区别

localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;

sessionStorage 数据在当前浏览器窗口关闭后自动删除。

因此sessionStorage 和 localStorage 的主要区别在于他们存储数据的生命周期,sessionStorage 存储的数据的生命周期是一个会话,而 localStorage存储的数据的生命周期是永久,除非主动删除数据,否则永远不会过期

Web Storage API

localStorage 和 sessionStorage 有着统一的API接口,下面以sessionStorage为例介绍一下 API 接口使用方法

添加键值对

setItem(key,value):为指定key值设置一个对应的value值

除了使用setItem方法,还可以使用sessionStorage.key = value或者sessionStorage['key'] = value这两种形式。

// 把name值存储到name的键上
sessionStorage.setItem('name', 'jacky'); // 法1 
// sessionStorage.name = 'jacky'; // 法2 
// sessionStorage['name'] = 'jacky'; // 法3 

添加数组和对象

需要注意的是key和value值必须是字符串形式的,如果不是字符串,会调用它们相应的toString()方法来转换成字符串再存储。

所以要存储数组或对象时,应先转换成字符串格式(如JSON格式)再进行存储,使用JSON.stringify(obj)方法

var obj = {
    name: 'jacky', 
    age: 22
};
sessionStorage['person'] = JSON.stringify(obj);
//sessionStorage['person'] = obj; 不能这样存储,这样存进去结果是"[object Object]"

存进去之后则为字符串格式

 "{"name":"jacky","age":22}"

需要拿出来使用的时候则使用JSON.parse()方法将JSON字符串转换为对象

var person = JSON.parse(sessionStorage['person'])

同理,数组也是这个用这个方法进行存储。

getItem(key):根据指定的key值获取对应的value值

和setItem一样,getItem也有两种等效形式,value = sessionStorage.key和value = sessionStorage['key']。获取到的 value 值是字符串类型,如果需要其他类型,需要自己做类型转换。

// 获取存储到 name 的键上的值
var name = sessionStorage.getItem('name');
// var name = sessionStorage.name;
// var name = sessionStorage['name'];

removeItem(key):删除指定的key值对应的value值

注意localStorage 没有数据过期的概念,所有数据如果失效了,需要开发者手动删除。

    var name = sessionStorage.getItem('name'); // "jacky"
    sessionStorage.removeItem('name');
    name = sessionStorage.getItem('name'); // null

clear():删除所有存储的内容

它和removeItem不同的地方是removeItem删除的是某一项,而clear是删除所有。

    // 清除 localStorage
    sessionStorage.clear();
    var len = sessionStorage.length; // 0
    //length属性用于获取 sessionStorage 中键值对的数量。

key(index):在指定的数字位置获取该位置的名字

需要注意的是赋值早的键值对应的索引值大,赋值完的键值对应的索引小,key方法可用于遍历 sessionStorage 存储的键值。

    sessionStorage.setItem('name','jacky');
    var key = sessionStorage.key(0); // 'name'
    sessionStorage.setItem('age', 10);
    key = sessionStorage.key(0); // 'age'
    key = sessionStorage.key(1); // 'name'

两者应用场景

sessionStorage应用场景

进行页面传值

localStorage应用场景

  1. 适合长期保存在本地的数据
  2. 可以用于存储该浏览器对该页面的访问次数
点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Karen110 Karen110
4年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Karen110 Karen110
4年前
一篇文章带你了解JavaScript的Storage接口
一、概念Storage接口用于脚本在浏览器保存数据。两个对象部署了这个接口:window.sessionStorage和window.localStorage。二、属性和方法1\.Storage.setItem()Storage.setItem()方法用于存入数据。它接受两个参数,第一个是键名,第二个是保存的数据。如果键名已经存在,该方法会更新已有
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
菜园前端 菜园前端
2年前
考考你浏览器缓存有哪些,区别是什么?
原文链接:浏览器缓存主要包含cookie、在HTML5新标准中新增了本地存储localStorage和会话存储sessionStorage。cookie什么是cookie?cookie是一些缓存数据,主要存储在你的电脑中。当你发起网络请求时也会携带当前域名
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
IE下Userdata本地化存储
这两天看了下Discuzx2发帖的实时保存机制,涉及到本地化存储,所以上网查了下,Firefox等支持HTML5的浏览器使用window.localStorage或window.sessionStorage存储,比较简单,所以我特别关注了一下IE下的本地化存储,以下是在网上查找的资料,作为笔记。 在InternetExplorer5中,Mi
Stella981 Stella981
3年前
SessionStorage、LocalStorage详解
转载请注明出处:葡萄城官网(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.grapecity.com.cn%2F),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。原文出处:https://blog.bitsrc.io/sessionstorage
Stella981 Stella981
3年前
HTML5之SessionStorage本地存储
此对象主要有两个方法:保存数据:sessionStorage.setItem(Key,value);读取数据:sessionStorage.getItem(Key);Key:表示你要存入的键名称,此名称可以随便命名,可以按照变量的意思来理解。Value:表示值,也就是你要存入Key中的值,可以按照变量赋值来理