本地存储localStorage用法详解


Posted in Javascript onJuly 31, 2017

一、什么是localStorage?

在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.clear()  // undefined   
 localStorage      //Storage {length: 0} 存储数据

存储数据

localStorage.setItem("name","caibin") //存储名字为name值为caibin的变量
localStorage.name = "caibin"; // 等价于上面的命令 
localStorage // Storage{name: "caibin", length: 1} 读取数据

读取数据

localStorage.getItem("name") //caibin,读取保存在localStorage对象里名为name的变量的值
localStorage.name // "caibin"
localStorage.valueOf() //读取存储在localStorage上的所有数据
localStorage.key(0) // 读取第一条数据的变量名(键值)
//遍历并输出localStorage里存储的名字和值
for(var i=0; i<localStorage.length;i++){
  console.log('localStorage里存储的第'+i+'条数据的名字为:'+localStorage.key(i)+',值为:'+localStorage.getItem(localStorage.key(i)));
}

删除某个变量

localStorage.removeItem("name"); //undefined
localStorage // Storage {length: 0} 可以看到之前保存的name变量已经从localStorage里删除了

检查localStorage里是否保存某个变量

// 这些数据都是测试的,是在我当下环境里的,只是demo哦~
localStorage.hasOwnProperty('name') // true
localStorage.hasOwnProperty('sex') // false

将数组转为本地字符串

var arr = ['aa','bb','cc']; // ["aa","bb","cc"]
localStorage.arr = arr //["aa","bb","cc"]
localStorage.arr.toLocaleString(); // "aa,bb,cc"

将JSON存储到localStorage里

var students = {
  xiaomin: {
    name: "xiaoming",
    grade: 1
  },
  teemo: {
    name: "teemo",
    grade: 3
  }
}

students = JSON.stringify(students); //将JSON转为字符串存到变量里
console.log(students);
localStorage.setItem("students",students);//将变量存到localStorage里

var newStudents = localStorage.getItem("students");
newStudents = JSON.parse(students); //转为JSON
console.log(newStudents); // 打印出原先对象

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 不间断的图片滚动并可点击
Jan 15 Javascript
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
Nov 11 Javascript
整理8个很棒的 jQuery 倒计时插件和教程
Dec 12 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
Javascript字符串对象的常用方法简明版
Jun 26 Javascript
jquery如何获取元素的滚动条高度等实现代码
Oct 19 Javascript
javascript中对Date类型的常用操作小结
May 19 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
Jul 26 Javascript
在angularJs中进行数据遍历的2种方法
Oct 08 Javascript
layui对工具条进行选择性的显示方法
Sep 19 Javascript
Vue 实现把表单form数据 转化成json格式的数据
Oct 29 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
Jul 31 #Javascript
ES6新特性:使用export和import实现模块化详解
Jul 31 #Javascript
node koa2实现上传图片并且同步上传到七牛云存储
Jul 31 #Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
Jul 31 #Javascript
详解React中的组件通信问题
Jul 31 #Javascript
Angular.js前台传list数组由后台spring MVC接收数组示例代码
Jul 31 #Javascript
Angular.js中数组操作的方法教程
Jul 31 #Javascript
You might like
php执行sql语句的写法
2009/03/10 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
永不消失的title提示代码
2007/02/15 Javascript
javascript事件模型代码
2007/07/01 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
JavaScript 浏览器对象模型BOM使用介绍
2015/04/13 Javascript
使用JavaScript实现旋转的彩圈特效
2015/06/23 Javascript
JS模拟并美化的表单控件完整实例
2015/08/19 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
论Bootstrap3和Foundation5网格系统的异同
2016/05/16 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
karma+webpack搭建vue单元测试环境的方法示例
2018/05/24 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
webuploader分片上传的实现代码(前后端分离)
2018/09/10 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
详解python eval函数的妙用
2017/11/16 Python
Python中的延迟绑定原理详解
2019/10/11 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
Python3+SQLAlchemy+Sqlite3实现ORM教程
2021/02/16 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
澳大利亚和新西兰最大的在线旅行社之一:Aunt Betty
2019/08/07 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
新大陆软件面试题
2016/11/24 面试题
森林防火工作方案
2014/02/14 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS
springboot集成springCloud中gateway时启动报错的解决
2021/07/16 Java/Android