ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript のカプセル化 Cookie アプリケーション インターフェイス_JavaScript スキル

JavaScript のカプセル化 Cookie アプリケーション インターフェイス_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 15:46:301105ブラウズ

この記事は、Cookie の学習中にこの本を読んで学んだことの一部を記録し、記憶を深め、将来の見直しのために整理して記録します。

パッケージング機能

Cookie へのアクセスはデフォルトでは面倒なものです。 Cookie は文字列を通じて情報を保存するため、代入操作を実行するときに読み取った情報のデータ型を変換するのが簡単です。また、Cookie 情報の文字列自体が煩わしく、特に Cookie 情報を多用する Web アプリケーションでは不便です。したがって、開発効率を高めるために、Cookie 関数を自分でカプセル化する必要があります。

関数 Cookie() を定義します。この関数は、指定された Cookie 情報の書き込み、指定された Cookie 情報の削除、および指定された名前の Cookie 値の読み取りを行うことができます。また、この関数では、Cookie 情報の有効期限を設定できます。有効なパス、スコープ、セキュリティ オプション設定も設定する必要があります。完全なコード:

var Cookie = function(name, value, options) {
    // 如果第二个参数存在
    if (typeof value != 'undefined') {
      options = options || {};
      if (value === null) {
        // 设置失效时间
        options.expires = -1;
      }
      var expires = '';
      // 如果存在事件参数项,并且类型为 number,或者具体的时间,那么分别设置事件
      if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
        var date;
        if (typeof options.expires == 'number') {
          date = new Date();
          date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
        } else {
          date = options.expires;
        }
        expires = '; expires=' + date.toUTCString();
      }
      var path = options.path ? '; path=' + options.path : '', // 设置路径
        domain = options.domain ? '; domain=' + options.domain : '', // 设置域 
        secure = options.secure ? '; secure' : ''; // 设置安全措施,为 true 则直接设置,否则为空

      // 把所有字符串信息都存入数组,然后调用 join() 方法转换为字符串,并写入 Cookie 信息
      document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); 
    } else { // 如果第二个参数不存在
      var CookieValue = null;
      if (document.cookie && document.cookie != '') {
        var Cookie = document.cookie.split(';');
        for (var i = 0; i < Cookies.length; i++) {
          var Cookie = (Cookie[i] || "").replace( /^\s+|\s+$/g, "");
          if (Cookie.substring(0, name.length + 1) == (name + '=')) {
            CookieValue = decodeURIComponent(Cookie.substring(name.length + 1));
            break;
          }
        }
      }
      return CookieValue;
    }
  };

使用方法

Cookie 情報の書き込み:

// 简单写入一条 Cookie 信息
cookie("user", "baidu");
// 写入一条 Cookie 信息,并且设置更多选项
cookie("user", "baidu", {
  expires: 10, // 有效期为 10 天
  path: "/", // 整个站点有效
  domain: "www.baidu.com", // 有效域名
  secure: true // 加密数据传输
});

2. Cookie 情報を読み取ります:

cookie("user");

3. Cookie 情報を削除します:

cookie("user", null);

パッケージ化されたコードを共有します

//向cookie写入数据
function writeCookie(name, value, days) {
 // 定义有效日期(cookie的有效时间)
 var expires = "";

 // 为有效日期赋值
 if (days) {
  var date = new Date();
	//设置有效期(当前时间+时间段)
  date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));//时间段为毫秒数 
  expires = "; expires=" + date.toGMTString();
 }

 // 给cookie赋值 name, value和expiration date(有效期)
 document.cookie = name + "=" + value + expires + "; path=/";
}
//读取cookie数据
function readCookie(name) {
 var searchName = name + "=";
 var cookies = document.cookie.split(';');
 for(var i=0; i < cookies.length; i++) {
  var c = cookies[i];
  while (c.charAt(0) == ' ')
   c = c.substring(1, c.length);
  if (c.indexOf(searchName) == 0)
   return c.substring(searchName.length, c.length);
 }
 return null;
}
//清楚所有的cookie
function eraseCookie(name) {
 // 将时间设置成-1将清除存储在cookie中的数据
 writeCookie(name, "", -1);
}

最後に、記事内に間違いや疑問点がございましたら、ご指摘ください。皆さんも励みにしましょう!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。