首页 > 代码库 > [0]-JavaScript中的localStorage和sessionStorage

[0]-JavaScript中的localStorage和sessionStorage

l  内容目录

  简介

  Storages的使用

  Storages VS Cookie

  最后

l  简介

  文中代码建议在Chrome/360Chrome下执行。

  HTML5中新增加了localStorage和sessionStorage,两者都是window的对象,可以通过window.localStorage/window.sessionStorage访问,用于保存数据,只是保存的范围略有不同。

  下文中的Storage表示window.localStorage和window.sessionStorage。

l  Storages的使用

  1) 两者异同

    都以键值对的形式存储数据,数据的键和值都是String类型

    localStorage存储在本地,除非手动清除否则数据不会过期消失

    sessionStorage伴随session存在,窗口关闭后存储在sessionStorage的数据将消失

  2) 继承关系

    localStorage和sessionStorage都是Storage的实例

    

    通过console.dir(localStorage)列出localStorage中存储的数据,我们发现了一个叫做__proto__的属性

        

     对象的__proto__会指向生成该对象构造函数的prototype属性。

    我们通过查找localStorage.__proto__也知道了localStorage是Storage的实例。

    实际上JavaScriptinstanceof运算符就是通过这种形式判断一个对象是否是一个类的实例。

    我们可以看到Storage中定义的方法:

clear() 清除存储的所有数据

getItem(String key) 获取key对应的value,返回的value为String类型

key(Number|String index) 获取指定索引数据的Key,如果index无法被转换成数字将返回key(0)的返回值,如果index指定的索引没有存储任何数据将返回null,不传递参数将会抛出Error

removeItem(String key) 移除key指定的键值对

      setItem(String key, String value) 设置键和值,参数都会被转换为字符串

3) 业务场景

    localStorage适合作为缓存存储不会被经常修改的数据,如组织机构树,被缓存的数据可以通过Chrome的开发者工具的Resources选项卡查看(如图我们可以看到还可以查看Web SQL和Cookie等等,世界真是太美好了)

    sessionStorage存储临时数据,会随着窗口被关闭而消失

l  Storages VS Cookie

Storages和Cookie的区别:

1) Storages中存储的数据不会随着请求被提交到服务器

2) Cookie最大为4KB,而Storages目前的形势可以按照5MB考虑

3) 对于Cookie我们使用原生JavaScript没有比较友好的读写方式,而对于Storages,我们可以使用Storage定义的方法轻松的进行读写

l  最后

第一次写这样的博客,经验不足。如果有错误的地方请及时指正。十分感谢。

[0]-JavaScript中的localStorage和sessionStorage