为了更好地coding,今天把localStorage封装了一下
因为考虑到全局命名污染,将某个页面/业务的数据保存的数据都存到一块分个类,大概是这样:
key | value |
---|---|
{“haha”:1,“ha”:2} |
代码如下:
class Storage {
constructor(namespace) {
// 命名空间:防止污染全局
this.namespace = namespace
}
set(key, value) {
// 这一步是将当前的命名空间里的数据都存到localStorage里
let storage = localStorage.getItem(this.namespace)
if (!storage){
// 没有数据默认空对象
storage = {}
}else{
// 有数据就把原来的值转出来,修改参数指定的key的value
storage = JSON.parse(storage)
}
storage[key] = value
// 将数据更新到localStorage
localStorage.setItem(this.namespace,JSON.stringify(storage))
}
get(key,def) {
let storage = localStorage.getItem(this.namespace)
// 获取不到数据就返回默认值
if(!storage) return def
// localStorage里存的是String
storage = JSON.parse(storage)
return storage[key]
}
}
总结:变量名字重复率太高了就打个包,localStorage好像有兼容性问题,有空写个适配器模式