js如何操作localstorage
js操作localstorage
localstorage是web前端常用的本地存儲(chǔ)服務(wù),它相對(duì)于cookie
有幾個(gè)優(yōu)勢(shì):
- ①數(shù)據(jù)存儲(chǔ)量大
- ②不會(huì)攜帶給后臺(tái),避免傳輸沒用的數(shù)據(jù)
- ③操作簡(jiǎn)便
1、首先封裝一個(gè)全局方法
以便各個(gè)地方調(diào)用
export function handleLocalStorage(method, key, value) { ? switch (method) { ? ? case 'get' : { ? ? ? let temp = window.localStorage.getItem(key); ? ? ? if (temp) { ? ? ? ? return temp ? ? ? } else { ? ? ? ? return false ? ? ? } ? ? } ? ? case 'set' : { ? ? ? window.localStorage.setItem(key, value); ? ? ? break ? ? } ? ? case 'remove': { ? ? ? window.localStorage.removeItem(key); ? ? ? break ? ? } ? ? default : { ? ? ? return false ? ? } ? } }
2、調(diào)用方法
- ①存儲(chǔ)
handleLocalStorage('set', 'userName', 'Tom');
- ②獲取
handleLocalStorage('get', 'userName');
- ③刪除
handleLocalStorage('remove', 'userName');
js localstorage(本地存儲(chǔ))必知
HTML API
localstorage 在瀏覽器的 API 有兩個(gè):localStorage 和sessionStorage,存在于 window 對(duì)象中:localStorage 對(duì)應(yīng) window.localStorage,sessionStorage 對(duì)應(yīng)window.sessionStorage。
localStorage 和 sessionStorage 的區(qū)別主要是在于其生存期。
基本用法
localStorage只要在相同的協(xié)議、相同的主機(jī)名、相同的端口下,就能讀取/修改到同一份localStorage數(shù)據(jù)。
sessionStorage比localStorage更嚴(yán)苛一點(diǎn),除了協(xié)議、主機(jī)名、端口外,還要求在同一窗口(也就是瀏覽器的標(biāo)簽頁(yè))下。
生存期
localStorage理論上來(lái)說(shuō)是永久有效的,即不主動(dòng)清空的話就不會(huì)消失,即使保存的數(shù)據(jù)超出了瀏覽器所規(guī)定的大小,也不會(huì)把舊數(shù)據(jù)清空而只會(huì)報(bào)錯(cuò)。但需要注意的是,在移動(dòng)設(shè)備上的瀏覽器或各Native App用到的WebView里,localStorage都是不可靠的,可能會(huì)因?yàn)楦鞣N原因(比如說(shuō)退出App、網(wǎng)絡(luò)切換、內(nèi)存不足等原因)被清空。
sessionStorage的生存期顧名思義,類似于session,只要關(guān)閉瀏覽器(也包括瀏覽器的標(biāo)簽頁(yè)),就會(huì)被清空。由于sessionStorage的生存期太短,因此應(yīng)用場(chǎng)景很有限,但從另一方面來(lái)看,不容易出現(xiàn)異常情況,比較可靠。
數(shù)據(jù)結(jié)構(gòu)
localstorage為標(biāo)準(zhǔn)的鍵值對(duì)(Key-Value,簡(jiǎn)稱KV)數(shù)據(jù)類型,簡(jiǎn)單但也易擴(kuò)展,只要以某種編碼方式把想要存儲(chǔ)進(jìn)localstorage的對(duì)象給轉(zhuǎn)化成字符串,就能輕松支持。
舉點(diǎn)例子:把對(duì)象轉(zhuǎn)換成json字符串,就能讓存儲(chǔ)對(duì)象了;把圖片轉(zhuǎn)換成DataUrl(base64),就可以存儲(chǔ)圖片了。另外對(duì)于鍵值對(duì)數(shù)據(jù)類型來(lái)說(shuō),"鍵是唯一的"這個(gè)特性也是相當(dāng)重要的,重復(fù)以同一個(gè)鍵來(lái)賦值的話,會(huì)覆蓋上次的值。
容量限制
目前業(yè)界基本上統(tǒng)一為5M,已經(jīng)比cookies的4K要大很多了
域名限制
由于瀏覽器的安全策略,localstorage是無(wú)法跨域的,也無(wú)法讓子域名繼承父域名的localstorage數(shù)據(jù),這點(diǎn)跟cookies的差別還是蠻大的。
異常處理
localstorage在目前的瀏覽器環(huán)境來(lái)說(shuō),還不是完全穩(wěn)定的,可能會(huì)出現(xiàn)各種各樣的bug,一定要考慮好異常處理。
我個(gè)人認(rèn)為localstorage只是資源本地化的一種優(yōu)化手段,不能因?yàn)槭褂胠ocalstorage就降低了程序的可用性,那種只是在console里輸出點(diǎn)錯(cuò)誤信息的異常處理我是絕對(duì)反對(duì)的。
localstorage的異常處理一般用try/catch來(lái)捕獲/處理異常。
JavaScript 存儲(chǔ)對(duì)象
存儲(chǔ)對(duì)象方法
key(n)
返回存儲(chǔ)對(duì)象中第 n 個(gè)鍵的名稱getItem(keyname)
返回指定鍵的值setItem(keyname, value)
添加鍵和值,如果對(duì)應(yīng)的值存在,則更新該鍵對(duì)應(yīng)的值。removeItem(keyname)
移除鍵clear()
清除存儲(chǔ)對(duì)象中所有的鍵
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
JS實(shí)現(xiàn)簡(jiǎn)單的天數(shù)計(jì)算器完整實(shí)例
這篇文章主要介紹了JS實(shí)現(xiàn)簡(jiǎn)單的天數(shù)計(jì)算器,結(jié)合完整實(shí)例形式分析了javascript針對(duì)日期的獲取及天數(shù)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2017-04-04JavaScript禁用右鍵單擊優(yōu)缺點(diǎn)分析
在本篇文章里小編給大家分享了關(guān)于JavaScript禁用右鍵單擊優(yōu)缺點(diǎn)分析,有需要的朋友們學(xué)習(xí)下。2019-01-01如何在webpack項(xiàng)目中調(diào)試loader插件
最近在學(xué)習(xí)webpack,本文主要介紹了loader插件的調(diào)試方法,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-06-06用js實(shí)現(xiàn)下載遠(yuǎn)程文件并保存在本地的腳本
//將常用的vbs下載者改成js版了。本來(lái)想用jsc.exe編譯,可是不成功。jsc.exe不認(rèn)WScript2008-05-05