本地存储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 相关文章推荐
用ASP将SQL搜索出来的内容导出为TXT的代码
Jul 27 Javascript
基于jquery的15款幻灯片插件
Apr 10 Javascript
文档对象模型DOM通俗讲解
Nov 01 Javascript
JavaScript中的bold()方法使用详解
Jun 08 Javascript
3个可以改善用户体验的AngularJS指令介绍
Jun 18 Javascript
jquery实现简单文字提示效果
Dec 02 Javascript
快速使用node.js进行web开发详解
Apr 26 Javascript
详解vuex 中的 state 在组件中如何监听
May 23 Javascript
JS获取动态添加元素的方法详解
Jul 31 Javascript
React-redux实现小案例(todolist)的过程
Sep 29 Javascript
vue element-ui中table合计指定列求和实例
Nov 02 Javascript
VueCli生产环境打包部署跨域失败的解决
Nov 13 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利用str_replace防注入的方法
2013/11/10 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
jQuery 可以拖动的div实现代码 脚本之家修正版
2009/06/26 Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
2010/07/26 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
javascript之典型高阶函数应用介绍
2013/01/10 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
基于Bootstrap+jQuery.validate实现Form表单验证
2014/12/16 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
jQuery中 $ 符号的冲突问题及解决方案
2016/11/04 Javascript
Js自动截取字符串长度,添加省略号(……)的实现方法
2017/03/06 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
JS实现的ajax和同源策略(实例讲解)
2017/12/01 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
python每隔N秒运行指定函数的方法
2015/03/16 Python
对python数据切割归并算法的实例讲解
2018/12/12 Python
Python中new方法的详解
2019/01/15 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
2021/01/27 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
巴黎一票通:The Paris Pass
2018/02/10 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
关于护士节的演讲稿
2014/05/26 职场文书
小班教师个人总结
2015/02/05 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
python 中的jieba分词库
2021/11/23 Python
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python
Redis入门基础常用操作命令整理
2022/06/01 Redis