赞
踩
LocalStorage 本地存储相关操作:
存储:localStorage.setItem(key,JSON.stringify(value))
获取:JSON.parse( localStorage.getItem(key) )
移除:localStorage.removeItem(key)
清空:localStorage.clear()
1.简单粗暴式封装
export class StorageService { constructor() { } setItem( key,value){ return localStorage.setItem(key , JSON.stringify(value)); } getItem(key){ return JSON.parse(localStorage.getItem(key)); } removeItem(key){ return localStorage.removeItem(key); } }
2.进一步精细封装 localStorage
export class LocalStorage{ public localStorage:any; // localStorage 是一个 Object constructor(){ if(!localStorage){ throw new Error('Current brower does not support Local Storage'); } this.localStorage = localStorage; } /** * 保存字符串 * @param {string} key * @param {string} value */ public set( key:string, value:string):void{ this.localSotorage[key] = value; } /** * 获取保存的字符串 * @param {string} key * @returns {string} */ public get( key:string):string{ return this.localStorage[key] || ' '; } /** * 保存对象 * @param {string} key * @param value */ public setObject( key:string, value:any):void{ this.localStorage[key] = JSON.stringify(value); } /** * 获取保存对象 * @param {string} key * @returns {any} */ public getObject(key:string):any{ return JSON.parse(this.localStorage[key || null]) } /** * 移除保存的数据 * @param {string} key * @returns {any} */ public remove(key:string):any{ this.localStorage.removeItem(key); } }
3.sessionStorage的封装与localStorage类似
export class SessionStorage{ public sessionStorage:any; constructor(){ if(!localStorage){ throw new Error('Current brower does not support Local Storage'); } this.sessionStorage = sessionStorage; } public set(key:string,value:string):void{ this.sessionStorage[key] = value; } public get(key:string):string{ return this.sessionStorage[key] || ' '; } public setObject(key:string,value:any):void{ this.sessionStorage[key] = JSON.stringify(value); } public getObject(key:string):any{ return JSON.parse(this.sessionStorage[key] || null); } public remove(key:string):void{ this.sessionStorage.removeItem(key); } }
4.这里顺带总结一下localStorage与sessionStorage的共同点与差异点:
(1)localStorage和sessionStorage 一样都是用来存储浏览器端临时信息的对象。
(2)他们均只能存储 String类型 的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现)。
(3)localStorage生命周期是“ 永久 ”,这意味着在每次会话结束之后用户需要手动清除localStorage信息,否则这些信息将永远存在。
(4)sessionStorage生命周期为“ 当前窗口或标签页 ”,一旦窗口或标签页被永久关闭了,那么所有通过sessionStorage存储的数据也就被清空了。
(5)不同浏览器无法共享localStorage或sessionStorage中的信息。
(6)相同浏览器的不同页面间可以共享相同的 localStorage(页面属于相同域名和端口),但是不同页面或标签页间无法共享sessionStorage的信息。这里需要注意的是,页面及标 签页仅指顶级窗口,如果一个标签页包含多个iframe标签且他们属于同源页面,那么他们之间是可以共享sessionStorage的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。