03.02 LocalStorage 如何實現過期時間功能

點擊右上方紅色按鈕關注“web秀”,讓你真正秀起來


LocalStorage 如何實現過期時間功能


使用過localStorage的小夥伴都知道,localStorage本身沒有時間過期的功能,那麼如何實現localStorage過期功能呢?

思路

1、使用localStorage時,設置一個定時器,比如10分鐘後過期,那就十分鐘後清除localStorage。但是面臨的問題是,如果瀏覽器關閉,定時器也就失效。如果解決呢?


10分鐘後過期,那就知道了截至時間,每次打開網址,就去檢測當前時間是否超過了截至時間,沒有就重新開啟定時器,如果超過,直接清除localStorage。


2、有了思路一,發現定時器並沒有什麼用。所以,使用localStorage.setItem時,並存入截至時間,每次localStorage.getItem時,校驗當前時間是否超過了截至時間,如果超過,直接清除localStorage。


下面我們用代碼,看看如何實現

代碼實現


<code>(function () {
var getItem = localStorage.getItem.bind(localStorage)
var setItem = localStorage.setItem.bind(localStorage)
var removeItem = localStorage.removeItem.bind(localStorage)
localStorage.getItem = function (keyName) {
var expires = getItem(keyName + '_expires')
if (expires && new Date() > new Date(Number(expires))) {
removeItem(keyName)
removeItem(keyName + '_expires')
}
return getItem(keyName)
}
localStorage.setItem = function (keyName, keyValue, expires) {
if (typeof expires !== 'undefined') {
var expiresDate = new Date(expires).valueOf()
setItem(keyName + '_expires', expiresDate)
}
return setItem(keyName, keyValue)
}
})()/<code>


重寫localStorage.setItem(),localStorage.getItem()方法,setItem()時,並存入expires截至時間,getItem()時,判斷截至時間和當前時間,超過即清除。


調用示例:

<code>localStorage.setItem('key', 'value', new Date() + 10000) // 10 秒鐘後過期
localStorage.getItem('key') // 10秒後獲取,就是空的了/<code>


喜歡小編或者覺得小編文章對你有幫助的,可以點擊一波關注哦!


分享到:


相關文章: