场景:缓存的数据需要定时清除
最近项目上有一个需求就是用户的登录信息用localStorage缓存,但是又要定期删除缓存的信息,localStorage本身是没有清除方法的,除非主动清除,信息是不会消失的,所以封装localStorage,重写了set,get方法。仅供参考。
storage.js
class Storage {
constructor() {
this.expires = 1000 * 5 //默认过期时间
}
set(key, value, expires) {
let storages = {}
storages[key] = {
value:value,
expires:expires === undefined? (new Date().getTime() + this.expires):(expires * 1000+new Date().getTime())
}
localStorage.setItem(key,JSON.stringify(storages))
}
get(key) {
const storages = JSON.parse(localStorage.getItem(key))
if(!storages){ //如果不存在
return null
}
if(new Date().getTime() > storages[key].expires){ //存在但过期
this.remove(key)
return null
}
return storages[key].value
}
remove(key) {
localStorage.removeItem(key)
}
}
export default new Storage();
使用
import storage from './js/storage.js'
var storage = new Storage()
console.log(storage);
storage.set('wang',222,20)