【笔记】JS封装本地缓存

var mystorage = window.localStorage; //获取localStorage对象
var cacheType = "storage"; //默認h5本地緩存

/**
 * localStorage本地緩存
 * add by songxuan 2018-7-10 14:37:47
 **/
var localstorage = {
    init: function () {
        //判断浏览器是否支持缓存
        if ('localStorage' in window && window['localStorage'] !== null) {
            //h5緩存
            cacheType = 'storage';
        }
        else if (navigator.cookieEnabled) {
            //cookie緩存
            cacheType = 'cookie';
        }
        else {
            alert("您的浏览器不支持本地缓存,可能导致某些功能无法使用!");
            return;
        }
    },
    set: function (key, value) {
        //初始化
        localstorage.init();

        try {
            if (cacheType == "storage") {
                //存储到localstorage
                mystorage.setItem(key, value);
            }
            else {
                //否则存储到cookie
                mycookie.set(key, value, 1);
            }
        }
        catch (ex) {
            alert(ex.message);
        }
    },
    get: function (key) {
        localstorage.init();
        let result = ""; //默认返回结果
        try {
            if (typeof (mystorage.getItem(key)) != "undefined") {
                //优先读取localstorage
                result = mystorage.getItem(key);
            }
            else if (typeof (mycookie.get(key)) != "undefined") {
                //如果没有,就读取cookie
                result = mycookie.get(key);
            }
        }
        catch (ex) {
            alert(ex.message);
        }
        return result;
    },
    remove: function (key) {
        //检查浏览器是否支持缓存
        localstorage.init();
        try {
            //清除指定localStorage
            mystorage.removeItem(key);
            //清除指定Cookie
            mycookie.remove(key);
        }
        catch (ex) {
            alert(ex.message);
        }
    },
    clear: function () {
        //检查浏览器是否支持缓存
        localstorage.init();
        try {
            //清除所有localStorage
            mystorage.clear();
        }
        catch (ex) {
            alert(ex.message);
        }
    }
}


/**
 * Cookie存取
 **/
var mycookie = {
    set: function (c_name, value, expiredays) {
        //存储到Coookie
        var exdate = new Date()
        exdate.setDate(exdate.getDate() + expiredays)
        document.cookie = c_name + "=" + escape(value) +
        ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString())
    },
    get: function (c_name) {
        //读取Cookie
        if (document.cookie.length > 0) {
            c_start = document.cookie.indexOf(c_name + "=")
            if (c_start != -1) {
                c_start = c_start + c_name.length + 1
                c_end = document.cookie.indexOf(";", c_start)
                if (c_end == -1) c_end = document.cookie.length
                return unescape(document.cookie.substring(c_start, c_end))
            }
        }
        return ""
    },
    remove: function (c_name) {
        //清除指定cookie
        mycookie.set(c_name, "", -1);
    },
    clear: function () {
        //清除所有cookie
        let cookies = document.cookie;
        let cookielist = cookies.split(";");
        for (let i = 0; i < cookielist; i++) {
            var firstCookie = cookielist[i].split("=");
            mycookie.set(firstCookie[0], "", -1);
        }
    }
}

新手上路,只是为了项目方便写的,如有错误,请大神指正。

猜你喜欢

转载自blog.csdn.net/Csongxuan/article/details/80912120