localStorage是一個屬于window對象下的對象,所以訪問時可以直接訪問旅赢,省略window斜姥。
localStorage與sessionStorage是相同的,不同只在于存在時限武花,localStorage除非手動清除瀏覽器緩存或是前端代碼執(zhí)行清除操作圆凰,否則會永久保存著,而sessionStorage則只存在于當前會話里体箕,也就是當用戶關閉了當前頁面专钉,就會變清除。
localStorage相較于cookie的最大不同和好處有兩點累铅,
一是大性拘搿:localStorage的大小一般是5M,不同瀏覽器會存在一些差別娃兽,cookie則只有4K大小菇民,所以localStorage可以作為本地數(shù)據(jù)庫來使用。
二是性能: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里的數(shù)據(jù)會自動轉化為string格式竟坛,所以平時使用如果是保存后臺返回的json數(shù)據(jù)闽巩,一般會結合json.stringify()以及json.parse()方法使用钧舌。如:
localStorage.addItem(key,json.stringify(data));
var data=json.parse(localStorage.key);
另外,前端還可以監(jiān)聽storage的變化涎跨,能很方便的實現(xiàn)一些數(shù)據(jù)綁定的操作洼冻,具體實現(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);
? ? })