代码改变世界

localStorage和sessionStorage

2018-11-01 16:01  心猿意‘码’  阅读(276)  评论(0编辑  收藏  举报

H5新特性之一:本地存储lacalStorage

优点:

  1.解决了cookie本地存储空间不足的问题(cookie中每条cookie的存储空间为4k),localStorage一般浏览器支持的是5m,视浏览器而定

  2. localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽

缺点:

  1.不同浏览器大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性

  2.所有的浏览器中都会把localStorage的值类型限定为string类型,对JSON对象类型需要一些转换

  3.localStorage在浏览器的隐私模式下面是不可读取的

  4.localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡

  5.localStorage不能被爬虫抓取到

区别:localStorage属于永久性存储;sessionStorage当会话结束的时候,其中的键值对会被清空

用法:

  1.清空:

localStorage.clear() // undefined 
localStorage //Storage {length: 0}

  2.存储:

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

  3.读取:

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)));
}

  4.删除某个变量:

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

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

localStorage.hasOwnProperty('name') // true
localStorage.hasOwnProperty('sex') // false

  6.将数组转为本地字符串:

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

  7.将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); // 打印出原先对象