cookie、localStorage、sessionStorage的区别

一、cookie、localStorage、sessionStorage区别:

三者的区别如下表:

二、localStorage、sessionStorage操作数据方法:

1.存储数据

        将数据以键值对的形式存储在浏览器中

sessionStorage.setItem( 'username' ,  'zhangsan' )
localStorage.setItem( 'password' ,  '123456')
2.获取数据

        通过指定键获取对应的值

var username = sessionStorage.getItem( 'username' ,  'zhangsan' )
var password = localStorage.getItem( 'password' ,  '123456' )
3.更新数据

        更新已存储的数据,仍需要通过键值对的方式设置新值

sessionStorage.setItem( 'username' ,  'lisi' )
localStorage.setItem( 'password' ,  '654321')
4.删除数据

        通过指定键来删除对应的数据

sessionStorage.removeItem( "username" )
localStorage.removeItem( "password" )
5.清空数据

        一次性删除 sessionStorage / localStorage 里面的数据

sessionStorage.clear()
localStorage.clear()

注意: 在 localStorage 中存储对象,需要将对象转换为字符串形式,因为 localStorage 只存储字符串数据。因此,先使用 JSON.stringfy() 方法将对象转化为 JSON 字符串,然后将其存储在 localStorage 中。使用存储对象时,使用 JSON.parse() 方法将字符串转化为原始的 JavaScrip 对象。

// 存储对象
var user = {
  username: "zhangsan",
  age: 18,
  password: "123456"
};
  
// 将 存储对象 转化为 JSON字符串
localStorage.setItem("user", JSON.stringify(user));
 
// 获取对象
var storedUser = localStorage.getItem("user");

// 将 JSON字符串 转化为 JavaScrip对象
var parsedUser = JSON.parse(storedUser);
 
console.log(parsedUser.username);     // 输出 "zhangsan"
console.log(parsedUser.age);         // 输出 18
console.log(parsedUser.password);       // 输出 "123456"

三、localStorage、sessionStorage区别:

1.作用域不同

sessionStorage:作用域限定于当前会话(当前浏览器标签页或窗口)

localStorage:作用域是永久的,数据在不同会话之间共享

2.生命周期不同

sessionStorage:数据在会话结束时被清除,即当用户关闭浏览器标签页或窗口时,sessionStorage中的数据会被删除。

localStorage:数据是持久化的,除非手动清除,否则会一直保存在客户端。

3.存储容量不同

sessionStorage:一般来说,容量限制在 5MB 左右。

localStorage:容量通常限制在 5MB 到 10MB 之间,具体根据浏览器而定。

注意:sessionStorage 的存储容量通常比 localStorage 小。

4.数据共享不同

sessionStorage:数据在同一个浏览器标签页或窗口中共享,但不会跨标签页或窗口共享。

localStorage:数据在同一个域名下的所有标签页和窗口中共享。

举例说明:

         浏览器打开了两个标签,访问相同的URL,在其中一个页面点击按钮清空sessionStorage ,不会对另外一个标签的 sessionStorage 有影响。

        在浏览器中,每个标签页都有自己独立的 'sessionStorage' 对象,它们之间是相互隔离的,用于存储会话级别的数据。若在一个标签中执行了清空 'sessionStorage' 操作,它只会清空当前标签页的 'sessionStorage',不会对其他标签页的 'sessionStorage' 产生直接影响。

         浏览器打开了两个标签,访问相同的URL,在其中一个页面点击按钮清空 localStorage ,会对另外一个标签的 localStorage 有影响,因为 localStorage 遵循浏览器的同源策略。

        同源策略:是一种安全机制,用于限制不同源的网页之间的交互,以防止恶意网页访问其他网页的数据。在同源策略中,两个网页只有在协议、主机和端口都相同的情况下,两个网页才被认为是同源的。

         对于 'localStorage' 来说,它的同源策略是基于域名的。只有当两个具有相同的协议、主机和端口时,它们才能访问相同的 'localStorage' 数据。若网页的域名不同,即使在同一个浏览器中打开,它们也无法访问彼此的 'localStorage' 数据。

5.数据访问方式不同

sessionStorage:在会话期间存储临时的数据,且数据不需要在不同标签或窗口之间共享。

localStorage:永久性地存储数据,或者需要在不同标签页 / 窗口之间共享数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值