简易封装Cookie

    Cookie不仅仅有名字和值两个属性,还有域(domain)、路径(path)等属性。其中,不同的域、不同的路径下可以存在同样名字的cookie。 一般我们设置cookie的方法是用一个同样名字、一个值。这时就一定要搞清楚你要设置的cookie的域和路径,否则就会产生问题。

    
    /**
     * 生成过期时间
     *
     * @param {Number|Infinity} day 过期天数 默认 Infinity
     */
    export function generateExpires(day) {
        const getDay = day || Infinity;
        const getNow = new Date();
    
        const getYearNumber = getNow.getFullYear();
        const getMonthNumber = getNow.getMonth() + 1;
        const getDateNumber = getNow.getDate();
    
        const getFullToday = `${getYearNumber}/${getMonthNumber}/${getDateNumber}`; // 只能用斜杠 不然有bug
    
    
        getNow.setTime(new Date(getFullToday).getTime() + (getDay * 24 * 60 * 60 * 1000));
    
        return getNow;
    }
    
    /**
     * 设置 Cookie
     *
     * @param {String} name Cookie 名
     * @param {String|Number|Boolean} value Cookie 值
     * @param {Number} expires 过期时间
     */
    export function setCookie(name, value, expires = generateExpires(Infinity)) {
        document.cookie = `${name}=${value}; expires=${expires.toUTCString()}; path=/`;
    }
    
    
    /**
     * 获取 Cookie
     *
     * @param {String} name 名
     */
    export function getCookie(name) {
        const cname = `${name}=`;
        const Cookie = document.cookie.split(';');
        for (let i = 0; i < Cookie.length; i += 1) {
            let item = Cookie[i];
            while (item.charAt(0) === ' ') item = item.substring(1);
            if (item.indexOf(cname) === 0) return item.substring(cname.length, item.length);
        }
        return '';
    }
    
    /**
     * 移除 Cookie
     * @param {string} name 名
     */
    export function removeCookie(name) {
        try {
            if (!name) throw Error('请输入Cookie名');
    
            const expires = new Date();
            expires.setTime(expires.getTime() - 1);
    
            const value = getCookie(name);
    
            if (value != null) {
                setCookie(name, value, expires);
            }
        }catch (e) {
            console.log(e);
        }
    }
    
    
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72