今天在闲鱼上收到一个单子,要求是利用localstorage的基础功能,封装一个类以供调用,因为在上班路上,并没有明确答应,到了工位上写了一下,然后联系了这位同学,他说别人已经接单了。就这样,我闲鱼上第一次接单就错过了,既然写了就放上来,万一以后有用到的呢!
单子就是要求,存储数据,根据key查找数据,根据首字符模糊查找数据,删除key的数据,根据首字符模糊删除数据,以及返回数据的json操作等功能,写完之后简单试了下,功能基本都可以实验,如果有错误的地方,还望大家指导一下(一个卑微的辣鸡前端开发者)

class MyStorage {
    constructor(name) {
        this.name = 'MyStorage';
    }

    set(key, value) {
        let options = {};
        if (Object.prototype.toString.call(value) == '[object String]') {
            options.name = key;
            options.value = value;
        }
        if (Object.prototype.toString.call(value) == '[object Object]') {
            options.name = key;
            options.value = JSON.stringify(value);
        }
        if (Object.prototype.toString.call(value) == '[object Array]') {
            options.name = key;
            options.value = JSON.stringify(value);
        }
        localStorage.setItem(options.name, options.value);
    }

    get(key) {
        let item = localStorage.getItem(key);
        return item;
    }

    match(key_pre) {
        const res = [];
        const myLength = key_pre.length;
        Object.keys(localStorage)
            .forEach(function (key) {
                let obj = {};
                if (key.substring(0, myLength) == key_pre) {
                    obj.name = key;
                    obj.value = localStorage.getItem(key);
                    res.push(obj)
                }
            });
        return res;
    }

    jqet(key) {
        let item = localStorage.getItem(key);
        try {
            item = JSON.parse(item);
        } catch (error) {
            item = item;
        }
        return item;
    }

    remove(key) {
        localStorage.removeItem(key);
    }

    removeMatch(key_pre) {
        const myLength = key_pre.length;
        Object.keys(localStorage)
            .forEach(function (key) {
                if (key.substring(0, myLength) == key_pre) {
                    localStorage.removeItem(key);
                }
            });
    }
}