## 第二節:屬性和方法
### 一、屬性
`Storage`接口只有一個屬性。
* `Storage.length`:返回保存的數據項個數。
~~~
window.localStorage.setItem('foo', 'a');
window.localStorage.setItem('bar', 'b');
window.localStorage.setItem('baz', 'c');
window.localStorage.length // 3
~~~
### 二、方法
* `Storage.setItem()`方法用于存入數據。
它接受兩個參數,第一個是鍵名,第二個是保存的數據。如果鍵名已經存在,該方法會更新已有的鍵值。該方法沒有返回值。
~~~
window.sessionStorage.setItem('key', 'value');
window.localStorage.setItem('key', 'value');
~~~
注意,`Storage.setItem()`兩個參數都是字符串。如果不是字符串,會自動轉成字符串,再存入瀏覽器。
~~~
window.sessionStorage.setItem(3, { foo: 1 });
window.sessionStorage.getItem('3') // "[object Object]"
~~~
上面代碼中,`setItem`方法的兩個參數都不是字符串,但是存入的值都是字符串。
> 如果儲存空間已滿,該方法會拋錯。
寫入不一定要用這個方法,直接賦值也是可以的。
~~~
// 下面三種寫法等價
window.localStorage.foo = '123';
window.localStorage['foo'] = '123';
window.localStorage.setItem('foo', '123');
~~~
* `Storage.getItem()`方法用于讀取數據。
它只有一個參數,就是鍵名。如果鍵名不存在,該方法返回`null`。
~~~
window.sessionStorage.getItem('key')
window.localStorage.getItem('key')
~~~
鍵名應該是一個字符串,否則會被自動轉為字符串。
* `Storage.removeItem()`方法用于清除某個鍵名對應的鍵值。
它接受鍵名作為參數,如果鍵名不存在,該方法不會做任何事情。
~~~
sessionStorage.removeItem('key');
localStorage.removeItem('key');
~~~
* `Storage.clear()`方法用于清除所有保存的數據。該方法的返回值是`undefined`。
~~~
window.sessionStorage.clear()
window.localStorage.clear()
~~~
* `Storage.key()`接受一個整數作為參數(從零開始),返回該位置對應的鍵值。
~~~
window.sessionStorage.setItem('key', 'value');
window.sessionStorage.key(0) // "key"
~~~
結合使用`Storage.length`屬性和`Storage.key()`方法,可以遍歷所有的鍵。
~~~
for (var i = 0; i < window.localStorage.length; i++) {
var key = localStorage.key(i);
var value = localStorage.getItem(key);
console.log(key);
console.log(value);
}
~~~
- 第一章:音視頻
- 第一節:概述
- 第二節:媒體元素
- 第三節:視頻元素
- 第四節:音頻元素
- 第四節:事件
- 第二章:高德地圖
- 第三章:Storage 接口
- 第一節:概述
- 第二節:屬性和方法
- 第三節:事件
- 第四章:IndexedDB
- 第一節:概述
- 第二節:基本概念
- 第三節:indexedDB 對象
- 第四節:IDBRequest 對象
- 第五節:IDBDatabase 對象
- 第六節:IDBObjectStore 對象
- 第七節:IDBTransaction 對象
- 第八節:IDBIndex 對象
- 第九節:IDBCursor 對象
- 第十節:IDBKeyRange 對象
- 第十一節:操作流程
- 第五章:Canvas
- 第一節:概述
- 第二節:繪制圖像
- 第一課時:路徑
- 第二課時:線型
- 第三課時:矩形
- 第四課時:弧線
- 第五課時:文本
- 第六課時:漸變色和圖像填充
- 第七課時:陰影
- 第三節:圖像處理
- 第一課時:寫入圖像
- 第二課時:像素讀寫
- 第三課時:保存和恢復
- 第四課時:畫布
- 第五課時:圖像變換
- 第四節:元素方法
- 第一課時:toDataURL()
- 第二課時:toBlob()
- 第五節:使用實例
- 第一課時:動畫效果
- 第二課時:像素處理