本地存储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 IFrame 强制刷新代码
Jul 23 Javascript
JavaScript极简入门教程(一):基础篇
Oct 25 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
Jan 02 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
Mar 05 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
Feb 25 Javascript
基于javascript实现表格的简单操作
May 21 Javascript
jQuery遍历json的方法(推荐)
Jun 12 Javascript
利用js+css+html实现固定table的列头不动
Dec 08 Javascript
jQuery验证表单格式的使用方法
Jan 10 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
Nov 01 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
Nov 26 Javascript
vue实现图片裁剪后上传
Dec 16 Vue.js
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
Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
2016/03/02 PHP
PHP下的浮点运算不准的解决方法
2016/10/27 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
JavaScript入门之基本函数详解
2011/10/21 Javascript
Yii2使用Bootbox插件实现自定义弹窗
2015/04/02 Javascript
jQuery的基本概念与高级编程
2015/05/14 Javascript
JavaScript中的Math.E属性使用详解
2015/06/12 Javascript
jQuery实现的精美平滑二级下拉菜单效果代码
2016/03/28 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
2016/08/03 Javascript
在javascript中使用com组件的简单实现方法
2016/08/17 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
原生JS检测CSS3动画是否结束的方法详解
2019/01/27 Javascript
微信小程序实现点击图片放大预览
2019/10/21 Javascript
Vue elementui字体图标显示问题解决方案
2020/08/18 Javascript
简单文件操作python 修改文件指定行的方法
2013/05/15 Python
使用python统计文件行数示例分享
2014/02/21 Python
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
使用python实现rsa算法代码
2016/02/17 Python
Python数组遍历的简单实现方法小结
2016/04/27 Python
Python 安装 virturalenv 虚拟环境的教程详解
2020/02/21 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
Python函数调用追踪实现代码
2020/11/27 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
纯CSS实现菜单、导航栏的3D翻转动画效果
2014/04/23 HTML / CSS
少年闰土教学反思
2014/02/22 职场文书
2014学雷锋活动总结
2014/03/09 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
关爱残疾人标语
2014/06/25 职场文书
实习单位证明范例
2014/11/17 职场文书
大学生操行评语大全
2014/12/31 职场文书
JS前端使用canvas实现扩展物体类和事件派发
2022/08/05 Javascript