抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

为了更好地coding,今天把localStorage封装了一下

因为考虑到全局命名污染,将某个页面/业务的数据保存的数据都存到一块分个类,大概是这样:

key value
email {“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好像有兼容性问题,有空写个适配器模式

评论