localStorage和sessionStorage一樣都是用來(lái)存儲(chǔ)客戶(hù)端臨時(shí)信息的對(duì)象饺蔑。
他們均只能存儲(chǔ)字符串類(lèi)型的對(duì)象(雖然規(guī)范中可以存儲(chǔ)其他原生類(lèi)型的對(duì)象锌介,但是目前為止沒(méi)有瀏覽器對(duì)其進(jìn)行實(shí)現(xiàn))。
localStorage生命周期是永久猾警,這意味著除非用戶(hù)顯示在瀏覽器提供的UI上清除localStorage信息孔祸,否則這些信息將永遠(yuǎn)存在。
sessionStorage生命周期為當(dāng)前窗口或標(biāo)簽頁(yè)发皿,一旦窗口或標(biāo)簽頁(yè)被永久關(guān)閉了崔慧,那么所有通過(guò)sessionStorage存儲(chǔ)的數(shù)據(jù)也就被清空了。
不同瀏覽器無(wú)法共享localStorage或sessionStorage中的信息雳窟。相同瀏覽器的不同頁(yè)面間可以共享相同的 localStorage(頁(yè)面屬于相同域名和端口)尊浪,但是不同頁(yè)面或標(biāo)簽頁(yè)間無(wú)法共享sessionStorage的信息。這里需要注意的是封救,頁(yè)面及標(biāo) 簽頁(yè)僅指頂級(jí)窗口拇涤,如果一個(gè)標(biāo)簽頁(yè)包含多個(gè)iframe標(biāo)簽且他們屬于同源頁(yè)面,那么他們之間是可以共享sessionStorage的誉结。
同源的判斷規(guī)則:
http://www.test.com
https://www.test.com/(不同源鹅士,因?yàn)閰f(xié)議不同)
http://my.test.com/(不同源,因?yàn)橹鳈C(jī)名不同)
http://www.test.com:8080/(不同源惩坑,因?yàn)槎丝诓煌?
localStorage和sessionStorage使用時(shí)使用相同的API:
localStorage.setItem("key","value");//以“key”為名稱(chēng)存儲(chǔ)一個(gè)值“value”
localStorage.getItem("key");//獲取名稱(chēng)為“key”的值
枚舉localStorage的方法:
for(var i=0;i<localStorage.length;i++){
var name = localStorage.key(i)?;
var value = localStorage.getItem(name);?
}
刪除localStorage中存儲(chǔ)信息的方法:
localStorage.removeItem("key");//刪除名稱(chēng)為“key”的信息掉盅。
localStorage.clear();?//清空l(shuí)ocalStorage中所有信息
通過(guò)getItem或直接使用localStorage["key"]獲取到的信息均為實(shí)際存儲(chǔ)的副本。
例如:
localStorage.key = {value1:"value1"}?;
localStorage.key.value1='a'?;
這里是無(wú)法?對(duì)實(shí)際存儲(chǔ)的值產(chǎn)生作用的以舒,下面的寫(xiě)法也不可以:
?localStorage.getItem("key").value1="a";