2019-04-24 localStorage & cookie & session

開門見山看需求:使用 localStorage封裝一個(gè) Storage 對(duì)象,達(dá)到如下效果:

Storage.set('name', '饑人谷')
Storage.set('age', 2, 30) ; //設(shè)置 name 字段存儲(chǔ)的值為'饑人谷'
Storage.set('teachers', ['ruoyu', 'fangfang', 'tom'], 60)


Storage.get('name') // ‘饑人谷’
Storage.get('age') // 如果不超過30秒,返回?cái)?shù)字類型的2;如果超過30秒,返回 undefined,并且 localStorage 里清除 age 字段
Storage.get('teachers') //如果不超過60秒,返回?cái)?shù)組; 如果超過60秒,返回undefined

var Storage = (function(){   //函數(shù)包括set和get功能
  return {
    set: function(key, value, expireSeconds){  //三個(gè)參數(shù),value為返回值,用來判斷是否超過時(shí)間?第三個(gè)參數(shù)為有效時(shí)間
      localStorage[key] = JSON.stringify({  //存儲(chǔ)格式為字符串,stringify轉(zhuǎn)格式
        value: value, 
        expired: expireSeconds===undefined?undefined:Date.now() + 1000*expireSeconds  //沒有設(shè)置時(shí)間為undefined,設(shè)置事件為現(xiàn)在的事件加上有效時(shí)長(zhǎng)
      })
    },
    get: function(key){   //沒有存儲(chǔ)內(nèi)容不返回值
      if(localStorage[key] === undefined){
        return   
      }
      var o = JSON.parse(localStorage[key]) 
      if(o.expired === undefined || Date.now() < o.expired){
        return o.value
      }else{
        delete localStorage[key]    //JSON.parse格式轉(zhuǎn)換回來,進(jìn)行判斷,如果沒有設(shè)置時(shí)間或者在有效時(shí)間內(nèi),返回value;否則超過時(shí)間就刪除內(nèi)容
      }
    }
 }
})()

cookie & session &localStorage 分別是什么?

1.cookie是存儲(chǔ)在瀏覽器上的一小段數(shù)據(jù),用來記錄某些當(dāng)頁面關(guān)閉或者刷新后仍然需要記錄的信息;
2.session是一次瀏覽器和服務(wù)器的交互的會(huì)話,第一次訪問時(shí),服務(wù)器會(huì)創(chuàng)建一個(gè)新的sesion,并且把session的Id以cookie的形式發(fā)送給客戶端瀏覽器,session信息存在于服務(wù)器端
3.localStorage ,webstorage特性的API之一,用于將大量數(shù)據(jù)(最大5M)保存在瀏覽器中,保存后數(shù)據(jù)永遠(yuǎn)存在不會(huì)失效過期,除非用 js手動(dòng)清除。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容