localStorage工具函数(markdown版)

以前的文章,整理成MarkDown,方便查看

//localStorage处理封装,以支持对象的存取
//@author visy.wang
 
export default {
  KEYS: {//保存所有的key,可扩展
    TOKEN_ID: "TOKEN_ID" //认证信息
  },
 
  //添加or修改
  set(key, data){
    if(data!=null && (typeof data === 'object')){//数组or对象
      data = JSON.stringify(data);
    }
    localStorage.setItem(key, data);
  },
 
  //批量添加or修改
  //data: Object 数据对象,包含要批量操作的数据
  //fields: Array/Object 指定要批量操作的字段名(和data的属性名对应)
  //fields为对象时可指定保存别名
  //fields不传时保存data的所有属性
  setBatch(data, fields){
    if(data==null || !(data instanceof Object)){
      return; //data必须是对象
    }
    if(fields instanceof Array){//提取字段并保存
      for(let name of fields){
      	let val = data[name];
        val!==undefined && this.set(name, val);
      }
    }else if(fields instanceof Object){
      //提取字段并指定别名后保存,
      //例子:data={xxx:123}, fields={xxx:"XXX"} 保存结果: XXX:123
      for(let name in fields){
      	let val = data[name];
        val!==undefined && this.set((fields[name]+''), val);
      }
    }else{//fields不是数组或对象时,保存data的所有属性
      for(let name in data){
        this.set(name,data[name]);
      }
    }
  },
 
  //查询,复合数据类型自动处理
  get(key){
    const val = localStorage.getItem(key);
    if(val===null || val==='null'){
      return null;
    }else if(val==='undefined'){
      return undefined;
    }else{
      try{
        return JSON.parse(val);//解析成功说明是JSON
      }catch (e) { //解析失败按原值返回
        return val;
      }
    }
  },
 
  //局部修改-目前只支持对象
  //修改key对应对象中的部分字段,fields格式: {field1:newVal1,field2:newVal2, ...}
  //field存在则修改,不存在相当于添加了一个新的属性
  modify(key, fields){
    let data = this.get(key);
    if(data!=null && data instanceof Object && fields){
      for(let name in fields){
        data[name] = fields[name];
      }
      this.set(key, data);
    }
  },
 
  //删除
  //传递需删除的key,可多个
  remove(...keys){
  	for(let key of keys){
      localStorage.removeItem(key);
    }
  }
  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值