>  기사  >  웹 프론트엔드  >  js 작업 쿠키 예

js 작업 쿠키 예

小云云
小云云원래의
2018-03-27 17:28:151251검색

이 기사는 주로 코드 형식으로 JS 쿠키 작업 예제를 공유합니다. 이것이 모든 사람에게 도움이 되기를 바랍니다.

/**
 * 
 * @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;
    }
}

관련 추천:

쿠키의 원리와 현상 분석

PHP 세션 제어를 위한 쿠키에 대한 자세한 설명

쿠키 사용에 대한 자세한 설명

위 내용은 js 작업 쿠키 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.