localStorage 和 sessionStorage的区别
存储对象:
在主流浏览器中,添加了html5 Web Storage API 的接口,storage是一个存储对象,它包括会话存储(session storage)或本地存储(local storage),它们分别有添加、修改或删除存储数据项的功能。
如果我们想要操作一个会话存储(session storage),可以使用 Window.localStorage对象,操作本地存储(local storage),可以使用 Window.sessionStorage对象。
localStorage介绍:
特征:
( 1 ).除非手动清除,否则永久保存在浏览器
( 1 ).存储大小一般为5MB
(3).只存在于客户端(浏览器)中,不参与和服务器的通信
(4).api使用简单,可以直接拿来使用,也可自己封装来对Object和Array有更好的支持
(5).相同浏览器的不同页面间可以共享相同的 localStorage
(6).不同浏览器无法共享localStorage或sessionStorage中的信息
api方法介绍:
localstorage.setItem(key,value) //该方法接受键,值两个参数,如果键存在,就更新值
localstorage.getItem(key) //该方法接受一个参数值key,返回对应的value值
localstorage.key(index) //该方法一个number值,返回对应下标的key
localstorage.removeItem(key) //该方法接受一个参数值key,把当前key,value从localstorage中删除
localstorage.clear() //该方法 清除对象中所有的key,value
对localStorage进行封装,可以兼容ie低版本浏览器(通过cookie来做兼容):
var local_storage = {};
local_storage = {
if(!window.localStorage){//当浏览器不支持localstorage的时候,采用cookie来代替localstorage
return{
getItem: function (sKey) {
if(!sKey || !this.hasOwnProperty(sKey)) { return null; }
return unescape(document.cookie.replace(new RegExp("(?:^|.*;\\s*)" + escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*"), "$1"));
},
key: function (nKeyId) {
return unescape(document.cookie.replace(/\s*\=(?:.(?!;))*$/, "").split(/\s*\=(?:[^;](?!;))*[^;]?;\s*/)[nKeyId]);
},
setItem: function (sKey, sValue) {
if(!sKey) { return; }
document.cookie = escape(sKey) + "=" + escape(sValue) + "; expires=Tue, 19 Jan 2038 03:14:07 GMT; path=/";
this.length = document.cookie.match(/\=/g).length;
},
length: (function(){
return (document.cookie.match(/\=/g) || window.localStorage).length;
})(),
removeItem: function (sKey) {
if (!sKey || !this.hasOwnProperty(sKey)) { return; }
document.cookie = escape(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
this.length--;
},
hasOwnProperty: function (sKey) {
return (new RegExp("(?:^|;\\s*)" + escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
}
};
}else{
return {
setItem:function(key,value){
window.localStorage.setItem(key,value);
},
getItem:function(key){
console.log(key);
return window.localStorage.getItem(key);
},
removeItem:function(key){
window.localStorage.removeItem(key);
},
removeAll:function(){
window.localStorage.clear();
},
length:(function(){
return window.localStorage.length;
})()
}
}
}
sessionStorage介绍:
特征:
(1).仅在当前会话下有效,浏览器被关闭或当前页面被关闭的情况下清除
(2).存储大小一般为5MB
(3).只存在于客户端(浏览器)中,不参与和服务器的通信
(4).api使用简单,可以直接拿来使用,也可自己封装来对Object和Array有更好的支持
(5).不同页面或标签页间无法共享sessionStorage的信息
(6).不同浏览器无法共享localStorage或sessionStorage中的信息
api方法介绍:
sessionStorage.setItem(key,value) //该方法接受键,值两个参数,如果键存在,就更新值
sessionStorage.getItem(key) //该方法接受一个参数值key,返回对应的value值
sessionStorage.key(index) //该方法一个number值,返回对应下标的key
sessionStorage.removeItem(key) //该方法接受一个参数值key,把当前key,value从sessionStorage中删除
sessionStorage.clear() //该方法 清除对象中所有的key,value
对sessionStorage进行封装,可以兼容ie低版本浏览器(通过cookie来做兼容):
var session_storage = {};
session_storage = {
if(!window.localStorage){//当浏览器不支持localstorage的时候,采用cookie来代替localstorage
return{
getItem: function (sKey) {
if(!sKey || !this.hasOwnProperty(sKey)) { return null; }
return unescape(document.cookie.replace(new RegExp("(?:^|.*;\\s*)" + escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*((?:[^;](?!;))*[^;]?).*"), "$1"));
},
key: function (nKeyId) {
return unescape(document.cookie.replace(/\s*\=(?:.(?!;))*$/, "").split(/\s*\=(?:[^;](?!;))*[^;]?;\s*/)[nKeyId]);
},
setItem: function (sKey, sValue) {
if(!sKey) { return; }
document.cookie = escape(sKey) + "=" + escape(sValue) + "; path=/";
this.length = document.cookie.match(/\=/g).length;
},
length: (function(){
return (document.cookie.match(/\=/g) || window.sessionStorage).length;
})(),
removeItem: function (sKey) {
if (!sKey || !this.hasOwnProperty(sKey)) { return; }
document.cookie = escape(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
this.length--;
},
hasOwnProperty: function (sKey) {
return (new RegExp("(?:^|;\\s*)" + escape(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
}
};
}else{
return {
setItem:function(key,value){
window.sessionStorage.setItem(key,value);
},
getItem:function(key){
console.log(key);
return window.sessionStorage.getItem(key);
},
removeItem:function(key){
window.sessionStorage.removeItem(key);
},
removeAll:function(){
window.sessionStorage.clear();
},
length:(function(){
return window.sessionStorage.length;
})()
}
}
}
参考资料:
https://developer.mozilla.org/zh-CN/docs/Web/API/Storage
localStorage 和 sessionStorage的区别的更多相关文章
- localStorage和sessionStorage的区别
//在chrome测试的结果; 知识点1:localStorage和sessionStorage的区别; localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除local ...
- vuex知识笔记,及与localStorage和sessionStorage的区别
菜单快捷导航 Vuex是什么东东,有什么应用场景?localStorage和sessionStorage能否替代它? Vuex知识点State.Getter.Mutaion.Action Vuex模块 ...
- cookie、session、localStorage、sessionStorage的区别
cookie的机制 cookie是存储在用户本地终端上的数据.有时也用cookies,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密. Cookie是服务器发 ...
- localStorage与sessionStorage 的区别
通过一枚页面计数器来区别localStorage与sessionStorage. 通过一个计数变量pageconut,每刷新页面,增加的是localStorage的数量,而sessionStorage ...
- 13.localStorage和sessionStorage的区别
HTMl5的sessionStorage和localStorage html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage. sessionSt ...
- cookie、LocalStorage、sessionStorage三者区别以及使用方式
cookie用来保存客户浏览器请求服务器页面的请求信息 HTML5的WebStorage提供了两种API:localStorage(本地存储)和sessionStorage(会话存储) WebStor ...
- cookie、localStorage、sessionStorage的区别
localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 共同点:sessionStorage.localStorage和cooki ...
- Cookie、LocalStorage 与 SessionStorage的区别在哪里?
基本概念 Cookie Cookie 是小甜饼的意思.顾名思义,cookie 确实非常小,它的大小限制为4KB左右.它的主要用途有保存登录信息,比如你登录某个网站市场可以看到“记住密码”,这通常就是通 ...
- localStorage、sessionStorage的区别
1.localStorage生命周期是永久的, sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了. ...
随机推荐
- 关于Spring Security的笔记
1.web.xml配置文件 加载Spring Security,将DelegatingFilterProxy配置在DispatcherServlet之前. <filter> <fil ...
- 组合数学中的常见定理&组合数的计算&取模
组合数的性质: C(n,m)=C(n,n-m); C(n,m)=n!/(m!(n-m)!); 组合数的递推公式: C(n,m)= C(n-1,m-1)+C(n-1,m); 组合数一般数值较大,题目会 ...
- [C++]变量存储类别,指针和引用,类与对象,继承与派生的一些摘要
C++中共有四种存储类别标识符:auto/static/register/extern 1.auto 函数或分程序内定义的变量(包括形参)可以定义为auto(自动变量).如果不指定存储类别,则隐式定义 ...
- AndroidManifest中的Intent-filter标签
经过测试,intent-filter标签中的: 1. <action android:name="android.intent.action.MAIN" /> 代表这是 ...
- wx:for wx:for-items wx:for-item
data:{ arr:[1,2,3,4,5], arrs:[[1,2,3,4,5],[1,2,3,4,5]] }wx:for 用于循环数组 默认数组的当前项的下标变量名默认为 index,数组当 ...
- Ubuntu下使用gcc编译c文件,未识别cos,sin
Ubuntu下使用gcc编译c文件,虽然我调用了math.h的头文件,但是未识别cos,sin 报错:( fft.c ) /tmp/ccwXjD8C.o: In function `fft': fft ...
- iOS中判断基础字符(大小写、数字等的判断)
函数:isdigit 用法:#include 功能:判断字符c是否为数字 说明:当c为数字0-9时,返回非零值,否则返回零. 函数:islower 用法:#include 功能:判断字符c是否为小写英 ...
- sqlserver 拷贝同步多个表数据到另一张表
--/****** Script for SelectTopNRows command from SSMS ******/ Insert into [DMSBusiness].[dbo].[Busin ...
- E20190308-hm
sweep vt. 扫除; 打扫,清理; 彻底搜索; 掠过; vi. 打扫; 扫过; 蜿蜒; 大范围伸展; n. 打扫; 延伸; 挥动; 全胜;
- hdu3257【模拟】
题意: 从案例找: 思路: 就是16进制,然后到2进制= =.就是个模拟= =.注意格式: #include <bits/stdc++.h> using namespace std; ty ...