localStorage 本地储存的 js 插件

motioliang2020-04-01jsjs

概述

基于 localStorage 本地储存的 js 插件 ,提供有效期、输出 json 数据等功能。

方法

方法名说明参数
setItem设置缓存key, value, expires
getItem获取缓存key
removeItem删除缓存key
clear删除全部缓存

代码

class Storage {
    // 设置缓存
    setItem(key, value, expires = 0) {
        let options = {
            key,
            value,
            expires, // 设置过期时间(默认天)
            startTime: new Date().getTime() //记录何时将值存入
        }
        // expires设置了以options为值放进去
        if (options.expires) {
            // 数字以天为单位
            if (typeof options.expires === 'number') {
                options.expires = expires * 24 * 60 * 60 * 1000
                localStorage.setItem(options.key, JSON.stringify(options))
            }
        } else {
            if (options.value instanceof Object || options.value instanceof Array) {
                options.value = JSON.stringify(options.value)
            }
            localStorage.setItem(options.key, options.value)
        }
    }

    // 获取缓存
    getItem(key) {
        let item = localStorage.getItem(key)
        if (!item) {
            return null
        }
        //先将拿到的试着进行json转为对象的形式
        try {
            item = JSON.parse(item)
        } catch (error) {
            //如果不行就不是json的字符串,就直接返回
            item = item
        }
        //如果有expires的值,说明设置了失效时间
        if (item.expires) {
            let date = new Date().getTime()

            //取出的时间,与item.expires比较,如果大于就是过期了,如果小于或等于就还没过期
            if (date - item.startTime > item.expires) {
                localStorage.removeItem(key)
                return null
            } else {
                return item.value
            }
        } else {
            return item
        }
    }

    // 删除缓存
    removeItem(key) {
        localStorage.removeItem(key)
    }

    // 删除全部缓存
    clear() {
        localStorage.clear()
    }
}

let storage = new Storage()

storage.setItem('cs', false)
storage.getItem('cs')
最后更新时间 2021/12/16 14:55:02
页面导航