localStorage是一個屬于window對象下的對象,所以訪問時可以直接訪問,省略window。
localStorage與sessionStorage是相同的,不同只在于存在時限,localStorage除非手動清除瀏覽器緩存或是前端代碼執(zhí)行清除操作,否則會永久保存著,而sessionStorage則只存在于當前會話里,也就是當用戶關閉了當前頁面,就會變清除。
localStorage相較于cookie的最大不同和好處有兩點,
一是大?。簂ocalStorage的大小一般是5M,不同瀏覽器會存在一些差別,cookie則只有4K大小,所以localStorage可以作為本地數據庫來使用。
二是性能:cookie會自帶出現(xiàn)在每次向服務器發(fā)送的請求里,自然會造成浪費,而localStorage不會,它本質上就是一個本地存儲空間,與服務器無關,也與請求無關了。
當然localStorage也有其局限,一是不支持IE7、IE6,二是隱私模式下無法訪問,三是爬蟲無法抓取,不利于搜索引擎優(yōu)化seo。但這些都瑕不掩瑜。
localStorage的使用:
設置:localStorage['name']=value;
localStorage.addItem(key,value);
localStorage.name=value;
刪除:localStorage.removeItem(key);
localStorage.clear();(請空所有l(wèi)ocalstorage);
讀取值則直接是localStorage.name即可。
此處有個需要注意的是保存在localStorage里的數據會自動轉化為string格式,所以平時使用如果是保存后臺返回的json數據,一般會結合json.stringify()以及json.parse()方法使用。如:
localStorage.addItem(key,json.stringify(data));
var data=json.parse(localStorage.key);
另外,前端還可以監(jiān)聽storage的變化,能很方便的實現(xiàn)一些數據綁定的操作,具體實現(xiàn)是:
window.addEventListener('storage', function(e){
?????????console.log('key', e.key);
? ? ? ? console.log('oldValue', e.oldValue);
? ? ? ? console.log('newValue', e.newValue);
? ? ? ? console.log('url', e.url);
? ? })