*商城项目中封装sotrage详解释
为什么要封装storage?
- Storage本身有API,但只是简单的键值对
- Storage只存储字符串,需要人工转换为json对象
- Storage只能一次性清空,不能单个清空
**1.首先获取网页中原有的storage**
getStorage(){
return JSON.parse(window.sessionStorage.getItem(STORAGE_KEY) ||'{}')
},
**2.查询方法storage方法:直接获取user
获取user中的 user-name**
getItem(key,module_name){
if (module_name){
let val =this.getItem(module_name);
if(val)
return val[key];
}
return this.getStorage()[key];
},
主要运用了递归方法来获取,有两种情况
第一种 只输入一个参数key (user)
第二种 输入两个参数module-name和key:
module和user平级, key此时与(user-name平级)
設置storage```
setItem(key,value,module_name){
if(module_name){
// 取出模块对象
let val = this.getItem(module_name);
val[key] = value;
this.setItem(module_name,val);
}
else{
// (1.)不带模块的 和user同级
let val = this.getStorage();
val[key] = value;
window.sessionStorage.setItem(STORAGE_KEY,JSON.stringify(val))
}
},
清空storage、
clear(key,module_name){
let val = this.getStorage();
if (module_name)
{
delete val[module_name][key]
}
else{
delete val[key];
}
window.sessionStorage.setItem(STORAGE_KEY,JSON.stringify(val));
}
以上是總結storage封裝問題