• cookie属性,有效期和作用域


    /*
    * cookieStorage API
    * @maxage 有效期
    * path 作用域
    * */
    function cookieStorage (maxage, path) {    var cookie = (function(){        var cookie = {};
    var all = document.cookie; // 获取全部的cookie的信息
    // 如果为空字符串就返回空对象
    if (all === "")
    return cookie;
    // 分离出名/值对
    var list =all.split("; ");
    // 遍历每个cookie
    for(var i = 0; i < list.length; i++) {
    var cookie = list[i];
    console.log(cookie);
    var p = cookie.indexOf("="); // 查找第一个"="符号
    var name = cookie.substring(0, p); // 获取cookie的名字
    var value = cookie.substring(p + 1); // 获取cookie对应的值
    value = decodeURIComponent(value); // 将名值对存储到对象中
    if (name === "userId") {
    continue;
    }
    cookie[name] = value;
    }
    return cookie;
    }());
    // 将所有cookie的名字存储到一个数组中
    var keys = [];
    for (var key in cookie) keys.push(key);

    // 定义存储API公共的属性和方法
    // 存储的cookie的个数
    this.length = keys.length;
    console.log(this.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)) {
    keys.push(key);
    this.length++;
    }
    //将该名/值对数据存储到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( ! (key in cookie)) {
    return;
    }
    //从内部维护的cookie组删除指定的cookie
    delete cookie[key];

    //同时将cookie中的名字也在内部的数组中删除
    for( var i=0; i < keys.length; 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 () {
    //循环所有的coolie的名字,并将cookie删除
    for(var i = 0; i < keys.length; i++ )
    document.cookie = keys[i] + "=; max-age=0";
    // 重置所有的内部状态
    cookie = {};
    key = [];
    this.length = 0;

    };
    }

    推荐前端学习群:fe html5/css3/js/jq/nodejs/div 群号:339840649
    
    
  • 相关阅读:
    jps, jstack, jmap, jhat, jstat
    SpringBoot工程可执行jar修改为可执行war
    SCP后台运行
    frp实现内网远程访问
    SpringBoot项目执行脚本, 自动拉取最新代码并重启
    文本聚合函数(wm_concat, listagg, group_concat, string_agg)
    linux磁盘空间占用分析
    jdbc打印sql语句-p6spy配置
    Linux系统的buff/cache缓存清理脚本
    环境变量及免密登录
  • 原文地址:https://www.cnblogs.com/Sunshine-boy/p/4774161.html
Copyright © 2020-2023  润新知