1. 程式人生 > >本地儲存localStorage的用法總結

本地儲存localStorage的用法總結

一、什麼是localStorage?

在HTML5中,新加入了一個localStorage特性,這個特性主要是用來作為本地儲存來使用的,解決了cookie儲存空間不足的問題(cookie中每條cookie的儲存空間為4k),localStorage中一般瀏覽器支援的是5M大小,這個在不同的瀏覽器中localStorage會有所不同。

二、localStorage的優勢與侷限

localStorage的優勢

1、localStorage拓展了cookie的4K限制

2、localStorage會可以將第一次請求的資料直接儲存到本地,這個相當於一個5M大小的針對於前端頁面的資料庫,相比於cookie可以節約頻寬,但是這個卻是隻有在高版本的瀏覽器中才支援的

localStorage的侷限

1、瀏覽器的大小不統一,並且在IE8以上的IE版本才支援localStorage這個屬性

2、目前所有的瀏覽器中都會把localStorage的值型別限定為string型別,這個在對我們日常比較常見的JSON物件型別需要一些轉換

3、localStorage在瀏覽器的隱私模式下面是不可讀取的

4、localStorage本質上是對字串的讀取,如果儲存內容多的話會消耗記憶體空間,會導致頁面變卡

5、localStorage不能被爬蟲抓取到

localStorage與sessionStorage的唯一一點區別就是localStorage屬於永久性儲存,而sessionStorage屬於當會話結束的時候,sessionStorage中的鍵值對會被清空。

三、localStorage的使用

清空localStorage

 localStorage.clear()    // undefined     
 localStorage            //Storage {length: 0} 儲存資料

儲存資料

localStorage.setItem("name","caibin") //儲存名字為name值為caibin的變數
localStorage.name = "caibin"; // 等價於上面的命令 
localStorage // Storage{name: "caibin", length: 1} 讀取資料

讀取資料

localStorage.getItem("name") //caibin,讀取儲存在localStorage物件里名為name的變數的值
localStorage.name // "caibin"
localStorage.valueOf() //讀取儲存在localStorage上的所有資料
localStorage.key(0) // 讀取第一條資料的變數名(鍵值)
//遍歷並輸出localStorage裡儲存的名字和值
for(var i=0; i<localStorage.length;i++){
    console.log('localStorage裡儲存的第'+i+'條資料的名字為:'+localStorage.key(i)+',值為:'+localStorage.getItem(localStorage.key(i)));
}

刪除某個變數

localStorage.removeItem("name"); //undefined
localStorage // Storage {length: 0} 可以看到之前儲存的name變數已經從localStorage裡刪除了

檢查localStorage裡是否儲存某個變數

// 這些資料都是測試的,是在我當下環境裡的,只是demo哦~
localStorage.hasOwnProperty('name') // true
localStorage.hasOwnProperty('sex')  // false

將陣列轉為本地字串

var arr = ['aa','bb','cc']; // ["aa","bb","cc"]
localStorage.arr = arr //["aa","bb","cc"]
localStorage.arr.toLocaleString(); // "aa,bb,cc"

將JSON儲存到localStorage裡

var students = {
    xiaomin: {
        name: "xiaoming",
        grade: 1
    },
    teemo: {
        name: "teemo",
        grade: 3
    }
}

students = JSON.stringify(students);  //將JSON轉為字串存到變數裡
console.log(students);
localStorage.setItem("students",students);//將變數存到localStorage裡

var newStudents = localStorage.getItem("students");
newStudents = JSON.parse(students); //轉為JSON
console.log(newStudents); // 打印出原先物件