Cookie的封装

Posted bblove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie的封装相关的知识,希望对你有一定的参考价值。

Cookie是什么

      Cookie实际上是一小段的文本信息,客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。

Cookie的封装:

  function isObject( options ){
      return ( typeof options === "object" && options !== null && options.constructor && options.constructor === Object);
  }
  此方法为判断输入的实参是否为对象;
  function assign(){
      var target = arguments[0];
      for(var i = 1 ; i < arguments.length ; i ++){
          for(var attr in arguments[i]){
              target[attr] = arguments[i][attr];
          }
      }
      return target;
  }
  讲两个对象合并为一个对象,也常用于给对象赋值默认值。
 
  function cookie( name , value , options  ){
      // 此时参数大于一个,value 是一个字符串。 那么我们认为此时我们在设置cookie;
      if( arguments.length > 1 && typeof value === "string"){        //判断输入的实参有几个,当至少为2个且 value的类型为string类型时执行下面语句
          if(!isObject( options )){               //如果options不为对象,令options为空对象
              options = {};
          }
          if( typeof options.expires === "number"){        
              var d = new Date();                 //对象中 expires类型为number时,获取本地时间
              d.setDate( d.getDate() + options.expires );        //设置此Cookie存在的时间
          }
          return (document.cookie = [            //往cookie中存放信息: name value domain path expires
                  name + "=" + value,
                  typeof options.domain === "string" ? ";domain=" + options.domain : "",
                  typeof options.path === "string" ? ";path=" + options.path : "",
                  typeof options.expires === "number" ? ";expires=" + d : "",
          ].join(""));                    
      }
                            //当输入实参为一个时,就是获取cookie中name的value值
      var cookie_string = document.cookie;
      var cookie_array  = cookie_string.split("; ");
      for(var i = 0 ; i < cookie_array.length ; i ++){
          if( cookie_array[i].split("=")[0] === name ){
              return cookie_array[i].split("=")[1]
          }
      }
      return "";
  }

当输入三位实参时:

    cookie("name","value",{
          domain :"localhost",
          path   :"/php",
              expires: 10
         });
就是往cookie中存入name=value;domain :"localhost",path   :"/PHP",expires: 10
技术图片

当输入两位实参时:

   cookie("name","value");
就是往cookie中存入name=value数据而 domain是你的默认本地域名 path为你的本地文件路径 expires默认为 session 当关闭此浏览器再打开,此条cookie会自动删除。
技术图片

当输入一位实参时:

  console.log(cookie("name"));

就是获取cookie中的对应的name的value值

技术图片

 

 

以上是关于Cookie的封装的主要内容,如果未能解决你的问题,请参考以下文章

Cookie的封装

cookie的设置获取和删除封装

cookie封装

cookie封装方法

NoHttp封装--03 cookie

如何封装一个Cookie库