个人理解:
简单说,就是开发者用来把数据存在本地浏览器里,
如果想做保持登录状态的功能,就要用到这个了
localstorage:永久存在浏览器上,只要不手动清除就一直在,无论刷新还是关闭窗口
sessionStorage:临时存在浏览器里,在关闭窗口之前,数据都在。关了窗口就没了
用法:
// 保存
localStorage.setItem(key,value) // 永久的
sessionStorage.setItem(key,value) // 临时的
// 读取
localStorage.getItem(key)
sessionStorage.getItem(key)
// 示例-存字符串:
localStorage.setItem('myKey','myvalue')
// 读取-字符串
localStorage.getItem('mykey') // 'myvalue'
// 示例-存对象(这个用JSON.stringify转一下再存)
localStorage.setItem('myKey',JSON.stringify({key1:value1,key2:value2}) )
在浏览器开发者工具里能查看当前的Storage,方便调试:
Storage是区分地址的,必须 地址/端口 完全一致才可以读取
举个例子:A站的Storage,B站是读取不到的
过期时间:
"很遗憾,localstorage原生是不支持设置过期时间的,只能自己来封装一层逻辑来实现"
// 封装保存数据的方法,保存key/value的同时,加一个时间进去
function set(key,value){
var curtime = new Date().getTime() //获取当前时间
localStorage.setItem( key,JSON.stringify({val:value,time:curtime}) )
}
// 封装读取数据的方法,读取的时候,根据时间验证是否过期了
function get(key,exp)//exp是设置的过期时间
{
var val = localStorage.getItem(key) //获取存储的元素
var dataobj = JSON.parse(val); //解析json对象
if(new Date().getTime() - dataobj.time > exp) // 判断 当前时间-创建时间 > 过期时间
{
// 过期了
console.log("过期了");
retur false
}else{
return val // 没过期,返回要取的值
}
}