js操作cookie实例

小云云
小云云 原创
2018-03-27 17:28:15 925浏览

本文主要和大家分享js操作cookie实例,主要以代码的形式和大家分享,希望能帮助到大家。

/**
 * 
 * @param {有效期} maxage 
 * @param {作用域} path 
 */
function cookieStorage(maxage, path) {
    var cookie = (function () {
        var cookies = {}; //该对象会最终返回
        var all = document.cookie; //一大些字符串的形式获取所有cookie信息
        if (all === "") {
            return cookie; //返回一个空对象
        }
        var list = all.split(";"); //分离出键值对
        for (var i = 0, len = list.length; i < len; i++) {
            var cookie = list[i];
            var p = cookie.indexOf("="); //查找第一个"="符号
            var name = cookie.substring(0, p); //获取cookie名字
            var value = cookie.substring(p + 1); //获取cookie对应的值
            value = decodeURIComponent(value); //对其值进行解码
            cookies[name] = value;
        }
        return cookies;
    }());

    //将所有cookie的名字存储到一个数组中
    var keys = [];
    for (var key in cookie) {
        keys.push(key);
    }

    //现在定义存储api公共的属性和方法
    //存储的cookie的个数
    this.length = keys.length;

    //返回第n个cookie的名字,如果n越界则返回null
    this.key = function (n) {
        if (n < 0 || n >= keys.length) {
            return null;
        }
        return keys[n];
    }

    //返回指定名字的cookie值,如果不存在则返回null
    this.getItem = function (name) {
        return cookie[name] || null;
    }

    //存储cookie值
    this.setItem = function (key, value) {
        if (!(key in cookie)) { //如果要存储的cookie还不存在
            keys.push(key);
            this.length++; //cookie个数加一
        }

        //将该键值对存储到cookie对象中
        cookie[key] = value;

        //开始正式设置cookie
        //首先将要存储的cookie的值进行编码,同时创建一个“名字=编码后的值”形式的字符串
        var cookie = key + "=" + encodeURIComponent(value);

        //将cookie的属性也加入到该字符串中
        if (maxage) cookie += ";max-age=" + maxage;
        if (path) cookie += ";path=" + path;

        //通过document.cookie属性来设置cookie
        document.cookie = cookie;
    };

    //删除指定的cookie
    this.removeItem = function(key){
        if(i(key in cookie)){
            return;
        }

        //从内部维护的cookie组删除指定的cookie
        delete cookie[key];

        //同时将cookie中的名字也在内部的数组中删除
        //如果使用es5定义的数组indexof方法会更简单
        for(var i = 0, len = keys.length ; i<len;i++){
            if(keys[i] === key){
                keys.splice(i,1);
                break;
            }
        }
        this.length--;

        //最重要通过该cookie值设置为空字符串以及将有效期设置为0来删除指定的cookie
        document.cookie = key + "=;max-age=0";
    };

    //删除所有的cookie
    this.clear = function(){
        for(var i = 0,len = keys.length;i<len;i++){
            document.cookie = keys[i] + "=;max-age=0";

        }
        //重置所有的内部状态
        cookie = {};
        keys = [];
        this.length = 0;
    }
}

相关推荐:

cookie的原理和现象分析

PHP会话控制之cookie详解

cookie的用法详细讲解

以上就是js操作cookie实例的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。