一、什么是localStorage
在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie的存储空间为4k)
二、localStorage的优势和局限
【1】优势
|
- localStorage拓展了cookie的4K限制
- localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的
|
【2】局限
|
- 浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性
- 目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换
- localStorage在浏览器的隐私模式下面是不可读取的
- localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡
- localStorage不能被爬虫抓取到
- localStorage与sessionStorage的唯一一点区别就是localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空
|
三、localStorage常用方法
我们首先在Chrome浏览器的控制台输入localStorage来查看其自带的方法。摘录了一些常用的API如下表所示
| 名称 | 作用 |
| setItem | 存储数据 |
| getItem | 读取数据 |
| clear | 清空localStorage上存储的数据 |
| removeItem | 删除某个具体变量 |
| key | 读取第i个数据的名字或称为键值(从0开始计数) |
| length | 获取localStorage存储变量的个数 |
【1】存储数据setItem
if (!window.localStorage) {
console.log('浏览器版本太低,不支持localStorage')
} else {
let storage = window.localStorage
storage.setItem('a', 1) // 存储名为a值为1的变量
storage.b = 2 // 存储名为b值为2的变量
storage['c'] = 3 // 存储名为c值为3的变量
}
【2】读取数据getItem
storage.getItem('a') // 1 读取保存在storage对象里名为a的变量值
storage.b // 2 读取保存在storage对象里名为b的变量值
storage['c'] // 3 读取保存在storage对象里名为c的变量值
storage.key(0) // 1 根据key值读取数据,key(0)代表对象的第一条数据
storage.valueOf() // 读取保存在storage对象上的全部数据
【3】修改数据
if (!window.localStorage) {
console.log('浏览器版本太低,不支持localStorage')
} else {
let storage = window.localStorage
// 写入a字段
storage.a = 1
// 修改a字段
storage.a = '@Demi'
}
【4】删除数据clear()和removeItem()
if (!window.localStorage) {
console.log('浏览器版本太低,不支持localStorage')
} else {
let storage = window.localStorage
storage.clear() // 删除所有键值对
storage.removeItem('a') // 删除指定的键值对
}
【5】注意事项
我们一般会将一个对象存入localstorage中,但是localstorage会自动将对象数据转换成字符串形式,这时候我们可以使用JSON.stringify()这个方法,来将数据转换成JSON字符串存入localstorage存入,当读取的时候再使用JSON.parse()方法读取出来。
if (!window.localStorage) {
console.log('浏览器版本太低,不支持localStorage')
} else {
let storage = window.localStorage
let data = {
name: 'Demi',
sex: 'woman',
hobby: 'program'
}
// 将对象转换成JSON格式存入localStorage
let dataValue = JSON.stringify(data)
storage.setItem('data', dataValue)
// 从localstorage中取出数据转换成对象格式
let json = storage.getItem('data')
let jsonObj = JSON.parse(json)
}
【6】查看浏览器的localstorage
1. 进入浏览器开发者工具
2\. 选择Application
3\. 在窗口左侧选择localStorage
文章每周持续更新,可以微信搜索「 前端大集锦 」第一时间阅读,回复【视频】【书籍】领取200G视频资料和30本PDF书籍资料
网友评论