本地存储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 相关文章推荐
js根据日期判断星座的示例代码
Jan 23 Javascript
根据配置文件加载js依赖模块
Dec 29 Javascript
JavaScript使用cookie实现记住账号密码功能
Apr 27 Javascript
Centos7 中 Node.js安装简单方法
Nov 02 Javascript
AngularJs每天学习之总体介绍
Aug 07 Javascript
Cpage.js给组件绑定事件的实现代码
Aug 31 Javascript
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
基于js文件加载优化(详解)
Jan 03 Javascript
原生js实现文件上传、下载、封装等实例方法
Jan 05 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
May 09 Javascript
利用node.js开发cli的完整步骤
Dec 29 Javascript
Vue中inheritAttrs的使用实例详解
Dec 31 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
利用discuz实现PHP大文件上传应用实例代码
2008/11/14 PHP
php 设计模式之 工厂模式
2008/12/19 PHP
php防止sql注入之过滤分页参数实例
2014/11/03 PHP
Laravel 5.4向IoC容器中添加自定义类的方法示例
2017/08/15 PHP
php接口隔离原则实例分析
2019/11/11 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
Javascript日期对象的dateAdd与dateDiff方法
2008/11/18 Javascript
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
jQuery 方法大全方便学习参考
2010/02/25 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
JS密码生成与强度检测完整实例(附demo源码下载)
2016/04/06 Javascript
Bootstrap carousel轮转图的使用实例详解
2016/05/17 Javascript
JS遍历数组和对象的区别及递归遍历对象、数组、属性的方法详解
2016/06/14 Javascript
浅析JavaScript中var that=this
2017/02/17 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
JavaScript基础之流程控制语句的用法
2017/08/31 Javascript
js实现动态添加上传文件页面
2018/10/22 Javascript
Vue实现验证码功能
2019/12/03 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
Python中Class类用法实例分析
2015/11/12 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
Python读取配置文件(config.ini)以及写入配置文件
2020/04/08 Python
python反爬虫方法的优缺点分析
2020/11/25 Python
快速解决pymongo操作mongodb的时区问题
2020/12/05 Python
HTML5仿手机微信聊天界面
2016/03/18 HTML / CSS
法国在线购买汽车轮胎网站:123pneus.fr
2019/02/25 全球购物
shell的种类有哪些
2015/04/15 面试题
统计专业自荐书
2014/07/06 职场文书
2015年幼儿园元旦亲子活动方案
2014/12/09 职场文书
中秋节感想
2015/08/10 职场文书
解决vue中provide inject的响应式监听
2022/04/19 Vue.js