思路:设置本地存储的时候存下当前设置的时间+失效时间,获取的时候判断当前获取的时间是不是大于存下的时间如果是就是失效否则就是有效。如果调用setItem的时候没有传time则一直有效。
//给localStorage||sessionStorage设置时间失效
//storage可以是localStorage||sessionStorage
//key 存储的key(必传) value 存储的内容(必传) time 多少分钟后失效(非必传)
//思路:设置本地存储的时候存下当前设置的时间+失效时间,获取的时候判断当前获取的时间是不是大于存下的时间如果是就是失效
// 否则就是有效。如果调用setItem的时候没有传time则一直有效
class Store{
constructor(storage) {
this.storage = storage
}
setItem(key, value, time) {
time = time ? Date.parse(new Date()) + time * 1000 * 60 : null
let params = {
value: value,
time: time ? time : null
}
window[this.storage].setItem(key, JSON.stringify(params))
}
getItem(key) {
let params = window[this.storage].getItem(key)
if (!params) return null
params = JSON.parse(params)
if (params.time) {
if (params.time > Date.parse(new Date)) {
return params.value
}
this.removeItem(key)
return null
}
return params.value
}
removeItem(key) {
window[this.storage].removeItem(key)
}
clear() {
window[this.storage].clear()
}
}
HTML代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Storage</title>
</head>
<body>
</body>
<script src="Storage.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
let localStorage=new Store('localStorage')
let name='张三'
localStorage.setItem('name1',name)
console.log(localStorage.getItem('name1'))
let sessionStorage=new Store('sessionStorage')
// let name='张三'
// sessionStorage.setItem('name1',name,1)
console.log(sessionStorage.getItem('name1'))
</script>
</html>