客户端存储之storage

客户端存储之Storage

Storage(或者更准确的说——Web Storage)介绍

  • 什么是Storage

Storage是一种Web存储机制(实现客户端存储的一种方式)

  • 为什么会有Storage

Storage的目的是克服由cookie存储所带来的限制——当数据需要被严格控制在客户端而无需持续的将数据发送回服务器。其主要实现两个目标:
1.提供一种cookie之外的存储会话数据的途径
2.提供一种存储大量可以跨会话存在的数据的机制

  • Storage具体为?

在window对象下有一个Storage构造函数,而localStorage与sessionStorage都是Storage的实例,因此localStorage与sessionStorage实质都是对象。你可以在控制台打印看看:

在这里插入图片描述

localStorage与sessionStorage都是window下的全局对象,直接使用即可

本篇文章主要就是学习localStorage与sessionStorage

localStorage

怎么通过localStorage在客户端存取数据?

有两种方式实现:

  • 通过属性访问表达式

前面已经说了——localStorage实际上就是一个对象。因此我们像平时存取对象的数据那样,便能通过localStorage在客户端存取数据了。如下:

localStorage.sentence='To be or not to be! That is a question!';

在这里插入图片描述

我们同样可以通过属性访问表达式去获取值,如:

var sentence = localStorage.sentence;

除此之外,通过属性访问表达式也能更改相关属性的值(因为localStorage本身为对象,因此其具有对象的特点)。但是我们一般不通过delete去删除存储的内容,而应使用其提供的API,下面会说到。

  • 通过更正式的API

在这里插入图片描述

在Storage中提供了专门的增删改查方法

1.setItem(key,value)——将对应的键值传入,可实现数据存储

2.getItem(key)——将键传入,可以获取对应的数据

3.removeItem(key)——将键传入,可以删除对应数据

4.clear()——无参数,用于删除所有存储的数据

5.key(0~length-1的值)——获取对应位置的键,再结合其他方法实现相应操作

localStorage.setItem('x',1);//以x的名字存储一个数值
localStorage.getItem('x');//获取数值

//枚举所有存储的数据
for(var i = 0; i < localStorage.length; i++){//length表示所有键值对的总数
	var name = localStorage.key(i);//获取第i对的键
	console.log(localStorage.getItem(name));
}

localStorage.removeItem('x');//删除x项
localStorage.clear();//全部删除
localStorage的存储有效期

通过localStorage存储的数据是永久的,除非web应用刻意删除存储的数据,或者用户通过设置浏览器的配置来删除,否则,数据将一直保存在电脑上,永不过期

localStorage的作用域

由于localStorage受同源策略的限制。因此,同源的文档间共享同样的localStorage数据。他们可以互相读取对方的数据,甚至可以覆盖对方的数据。

但是不同源的两个文档都不能操作对方的数据

sessionStorage

怎么通过sessionStorage在客户端存取数据?

sessionStorage存取数据的方式同localStorge

sessionStorage的存储有效期

一旦浏览器窗口关闭,或页面所在标签页被关闭,那么sessionStorage数据也会随之被删除

sessionStorage的作用域

1.由于sessionStorage也受同源策略限制,因此,同localStorage一样,非同源的文档是不能访问对方数据的

2.不仅如此,sessionStorage的作用域还被限制在标签页中。即如果同源文档渲染在不同的标签页中,那么两者不能共享sessionStorage数据

这儿有以下两点需要注意:

一:
在一个文档中通过iframe嵌入另一个同源的文档,那么这两个文档是能够共享sessionStorage数据的。因为其同源,而且还位于同一个标签页中

二:
如果一个标签页中包含两个iframe标签,他们所包含的文档是同源的,那么这两者之间是能够共享sessionStorage的。因为其同源,而且还位于同一个标签页中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值