简单的封装cookie函数

   function setCookie(name, value, {expires, path, domain, secure}){

                var cookieStr = encodeURIComponent(name) + "=" + encodeURIComponent(value);

                if(expires){

                    cookieStr += ";expires=" + afterOfDate(expires);

                }

                if(path){

                    cookieStr += ";path=" + path;

                }

                if(domain){

                    cookieStr += ";domain=" + domain;

                }

                if(secure){

                    cookieStr += ";secure";

                }

                document.cookie = cookieStr;

            }

            //获取n天后的日期

            function afterOfDate(n){

                 var d = new Date();

                 var day = d.getDate();

                 d.setDate(n + day);

                 return d;

             }

             function getCookie(name){

                var cookieStr = decodeURIComponent(document.cookie);

                var start = cookieStr.indexOf(name + "=");

                if(start == -1){

                    return null;

                }else{

                    //查询从start位置开始遇到的第一个分号

                    var end = cookieStr.indexOf(";", start);

                    if(end == -1){

                        end = cookieStr.length;

                    }

                    //进行字符串提取

                    var str = cookieStr.substring(start, end);

                    var arr = str.split("=");

                    return arr[1];

                }

             }

            function removeCookie(name){

                document.cookie = encodeURIComponent(name) + "=;expires=" + new Date(0);

            }

            /*

                【注】在使用一个方法实现三个功能的时候。

                     通过传入参数的数量识别:

                     设置cookie

                     $cookie(name, value);

                     $cookie(name, value, {});

                     获取cookie

                     $cookie(name);

                     删除cookie

                     $cookie(name, null);

            */

           function $cookie(name){

                //判断传入参数的个数

                switch(arguments.length){

                    case 1:

                        return getCookie(name);

                        break;

                    case 2:

                        if(arguments[1] == null){

                            removeCookie(name);

                        }else{

                            setCookie(name, arguments[1], {});

                        }

                        break;

                    default:

                    setCookie(name, arguments[1], arguments[2]);

                        break;

                }

            }

转载于千锋教育 码农雨飞老师,经验证无误

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值