JS面向对象的Cookie操作

本文介绍了如何使用JavaScript面向对象的方式进行Cookie的操作,包括创建、读取、删除Cookie的方法,并提供了一个封装好的Cookie对象,方便开发者直接使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS面向对象的Cookie操作


一、Cookie是什么

cookie 是存储于访问者的计算机中的变量。

每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie。

可以使用 JavaScript 来创建和取回 cookie 的值。

二、Cookie操作

1、创建cookie

document.cookie="name=小明";

添加过期时间(以 UTC 或 GMT 时间)

document.cookie="name=小明; expires=Thu, 18 Dec 2013 12:00:00 GMT";

2、读取cookie

var cookie = document.cookie;

注意:document.cookie 将以字符串的方式返回所有的 cookie,类型格式: cookie1=value; cookie2=value; cookie3=value;

3、删除cookie

删除 cookie 非常简单。只需要设置 expires 参数为以前的时间即可,如下所示,设置为 Thu, 01 Jan 1970 00:00:00 GMT:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";

三、封装Cookie

1、定义一个匿名函数

(function () {})(window);

2、定义Cookie构造函数

    function Cookie() {
    }

3、定义Cookie添加函数

    /**
     * 设置cookie
     * @param key
     * @param value
     * @param exdays
     */
    Cookie.prototype.set = function (key, value, exdays) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
        var expires = "expires=" + d.toUTCString();
        document.cookie = key + "=" + value + "; " + expires;
    }

4、定义获取所有Key的函数

    /**
     * 获取所有cookie名
     * @returns {Array}
     */
    Cookie.prototype.keys = function () {
        var cookie = document.cookie;
        var cookies = cookie.split(';');
        var keys = [];
        cookies.forEach(function (c, index) {
            var tmp = c.split('=');
            keys[index] = tmp[0].trim();
        })
        return keys;
    }

5、定义Cookie删除函数

    /**
     * 清除cookie
     * @param key
     */
    Cookie.prototype.clear = function (key) {
        /**
         * 清除指定的cookie
         */
        if (key)
            this.set(key, "", -1);
        else {
            /**
             * 清除所有cookie
             */
            var keys = this.keys();
            var _this = this;
            keys.forEach(function (item, index) {
                _this.set(item, "", -1);
            })
        }

    }

6、定义Cookie获取函数

    /**
     * 获取指定的cookie
     * @param key
     * @returns {undefined}
     */
    Cookie.prototype.get = function (key) {
        var cookie = document.cookie;
        var cookies = cookie.split(';');
        var value = undefined;
        cookies.forEach(function (c, index) {
            var tmp = c.split('=');
            if (tmp[0] && tmp[0].trim() === key) {
                if (tmp.length <= 1) {
                    return null;
                }
                value = tmp[1];
            }
        })
        return value;
    }

7、把定义的Cookie对象挂载到window上

    /**
     * 挂载Cookie
     * @type {Cookie}
     */
    window.Cookie = Cookie;

四、完整代码

(function () {

    function Cookie() {
    }

    /**
     * 获取指定的cookie
     * @param key
     * @returns {undefined}
     */
    Cookie.prototype.get = function (key) {
        this.clear();
        var cookie = document.cookie;
        var cookies = cookie.split(';');
        var value = undefined;
        cookies.forEach(function (c, index) {
            var tmp = c.split('=');
            if (tmp[0] && tmp[0].trim() === key) {
                if (tmp.length <= 1) {
                    return null;
                }
                value = tmp[1];
            }
        })
        return value;
    }

    /**
     * 设置cookie
     * @param key
     * @param value
     * @param exdays
     */
    Cookie.prototype.set = function (key, value, exdays) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
        var expires = 'expires=' + d.toUTCString();
        document.cookie = key + '=' + value + '; ' + expires;
    }

    /**
     * 清除cookie
     * @param key
     */
    Cookie.prototype.clear = function (key) {
        /**
         * 清除指定的cookie
         */
        if (key)
            this.set(key, '', -1);
        else {
            /**
             * 清除所有cookie
             */
            var keys = this.keys();
            var _this = this;
            keys.forEach(function (item, index) {
                _this.set(item, '', -1);
            })
        }

    }

    /**
     * 获取所有cookie名
     * @returns {Array}
     */
    Cookie.prototype.keys = function () {
        var cookie = document.cookie;
        var cookies = cookie.split(';');
        var keys = [];
        cookies.forEach(function (c, index) {
            var tmp = c.split('=');
            keys[index] = tmp[0].trim();
        })
        return keys;
    }

    /**
     * 挂载Cookie
     * @type {Cookie}
     */
    window.Cookie = Cookie;


})(window);


五、调用示例

1、创建Cookie对象

var cookie = new Cookie();

2、添加Cookie

cookie.set('name', '小明', 1);

3、获取Cookie

cookie.get('name')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值