ホームページ > 記事 > ウェブフロントエンド > JavaScript のカプセル化 Cookie アプリケーション インターフェイス_JavaScript スキル
この記事は、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); }
最後に、記事内に間違いや疑問点がございましたら、ご指摘ください。皆さんも励みにしましょう!