Storage/Storage.js

/**
 * 浏览器存储相关storage工具函数
 *
 * @class Storage
 */
class Storage{
    constructor(){

    }


    // localStorage
   

   /**
    * @description localStorage 长期存储在浏览器
    * @description: 目前对象值如果是函数 、RegExp等特殊对象存贮会被忽略
    * @description: JSON 不允许包含函数,JSON.stringify() 会删除 JavaScript 对象的函数,包括 key 和 value。
    * @description: JSON 不允许包含正则,JSON.stringify() 会删除 正则 对象,value,key保留。
    * @description localStorage 存贮
    * 
    * @param {String} key 属性
    * @param {String} value 值
    * @return  { undefined }
    * @memberof Storage
    * @example
    * localStorageSet("id","asas")  // 目前对象值如果是函数 、RegExp等特殊对象存贮会被忽略
    */
   localStorageSet (key, value){
        if (typeof (value) === 'object') value = JSON.stringify(value);
        localStorage.setItem(key, value)
    }

    /**
     * @description localStorage 获取
     *
     * @param {String} key 属性
     * @return {String} 
     * @memberof Storage
     * @example
     * localStorageGet("id")    // "asas"
     */
    localStorageGet (key){
        return localStorage.getItem(key)
    }

    /**
     * @description localStorage 移除
     *
     * @param {String} key 属性
     * @return {undefined} 
     * @memberof Storage
     * @example
     * localStorageRemove("id")
     */
    localStorageRemove (key){
        localStorage.removeItem(key)
    }

    /**
     * @description 存贮某一段时间失效
     *
     * @param {String} key 属性
     * @param {String} value 存贮值
     * @param {Number} expire 过期时间,毫秒数
     * @return {undefined} 
     * @memberof Storage
     * @example
     * localStorageSetExpire("id","asas",1000)
     * console.log(localStorageGet("id"))
     * 
     * setTimeout(function(){
     *      console.log(localStorageGet("id"))
     * },2000)
     */
    localStorageSetExpire (key, value, expire){
        if (typeof (value) === 'object') value = JSON.stringify(value);
        localStorage.setItem(key, value);
        setTimeout(() => {
            localStorage.removeItem(key)
        }, expire)
    }

    


    // sessionStorage


    /**
     * @description sessionStorage 浏览器关闭消失
     * @description sessionStorage 存贮
     *
     * @param {String} key
     * @param {String} value
     * @return {undefined}
     * @memberof Storage
     * @example
     * sessionStorageSet("id","asas")  // 目前对象值如果是函数 、RegExp等特殊对象存贮会被忽略
     */
    sessionStorageSet (key, value){
        if (typeof (value) === 'object') value = JSON.stringify(value);
        sessionStorage.setItem(key, value)
    }

    /**
     * @description sessionStorage 获取
     *
     * @param {String} key 属性
     * @return {String} 
     * @memberof Storage
     * @example
     * sessionStorageGet("id")    // "asas"
     */
    sessionStorageGet (key){
        return sessionStorage.getItem(key)
    }

    /**
     * @description sessionStorage 删除
     *
     * @param {String} key 属性
     * @return {undefined} 
     * @memberof Storage
     * @example
     * sessionStorageRemove("id")
     */
    sessionStorageRemove (key){
        sessionStorage.removeItem(key)
    }


    /**
     * @description sessionStorage 存贮某一段时间失效
     *
     * @param {String} key 属性
     * @param {String} value 存贮值
     * @param {Number} expire 过期时间,毫秒数
     * @return {undefined} 
     * @memberof Storage
     * @example
     * sessionStorageSetExpire("id","asas",1000)
     * console.log(sessionStorageGet("id"))
     * 
     * setTimeout(function(){
     *      console.log(sessionStorageGet("id"))
     * },2000)
     */
    sessionStorageSetExpire (key, value, expire){
        if (typeof (value) === 'object') value = JSON.stringify(value);
        sessionStorage.setItem(key, value);
        setTimeout(() => {
            sessionStorage.removeItem(key)
        }, expire)
    }


    // cookie 存储在服务器  只能存4k


    /**
     * @description cookie 存储在服务器  只能存4k
     * @description cookie 存贮
     *
     * @param {String} key 属性
     * @param {String} value 值
     * @param {Number} expire 过期时间,单位天
     * @return {undefined}
     * @memberof Storage
     * @example
     * cookieSet ("id","asas",10000)
     */
    cookieSet (key, value, expire){
        const d = new Date();
        d.setDate(d.getDate() + expire);
        document.cookie = `${key}=${value};expires=${d.toUTCString()}`
    }

    /**
     * @description cookie 获取
     *
     * @param {String} key 属性
     * @return {String} 
     * @memberof Storage
     * @example
     * cookieGet("id")    // "asas"
     */
    cookieGet (key){
        const cookieStr = unescape(document.cookie);
        const arr = cookieStr.split('; ');
        let cookieValue = '';
        for (let i = 0; i < arr.length; i++) {
            const temp = arr[i].split('=');
            if (temp[0] === key) {
                cookieValue = temp[1];
                break
            }
        }
        return cookieValue
    }

    /**
     * @description cookie 删除   key还在,val为空
     *
     * @param {String} key 属性
     * @return {undefined} 
     * @memberof Storage
     * @example
     * cookieRemove("id")
     */
    cookieRemove (key){
        document.cookie = `${encodeURIComponent(key)}=;expires=${new Date()}`
    }

}


export {Storage}