## 第二节:属性和方法
### 一、属性
`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()
- 第五节:使用实例
- 第一课时:动画效果
- 第二课时:像素处理