blog

JavaScriptにおけるクッキーの単純なカプセル化

cookieはカプセル化する必要があります。ネイティブのcookieインターフェースは十分にフレンドリーではないので、練習のために単純なバージョンのcookieをカプセル化しました。...

Jun 19, 2020 · 3 min. read
シェア

JavaScriptにおけるクッキーの単純なカプセル化

クッキーの紹介

、複数形で使用されることもあり、ユーザー識別および追跡を目的として特定のウェブサイトによってユーザーのローカル端末に保存される小さなテキストファイルであり、ユーザーの一時的または永続的に保存される情報です。

クッキーは自分自身でパッケージする必要があります。ネイティブのクッキーのインターフェースは十分にフレンドリーではないので、私は練習のためにクッキーのシンプルなバージョンをパッケージしました。

//クッキー・クラスを作る: 
function Cookie() {
}
// prototype:はコンストラクタのプロトタイプである
// プロトタイプ・オブジェクトのすべてのプロパティとメソッドは、コンストラクター配下のオブジェクトが所有できる。
//setCookie 
Cookie.prototype.setCookie = function (args) {
 if (Array.isArray(args)) {//受信データが配列の場合、クッキーを繰り返しセットする。
 for (let item of args) {
 let d = new Date();
 d.setTime(d.getTime() + item.time *  * 1000);//時間の設定
 document.cookie = item.key + "=" + item.value + ";expires=" + d;//クッキーを追加する
 }
 }
 else {
 let d = new Date();
 d.setTime(d.getTime() + args.time *  * 1000);
 document.cookie = args.key + "=" + args.value + d + ";expires=" + d;
 }
 // メソッドの呼び出し元を返す。
 return this
}
//getCookie 
Cookie.prototype.getCookie = function () {
 //処理されたクッキー・データを保持する空の配列を定義し、それを返す。
 let arr = [];
 //すべてのクッキー・データを取り出す
 let cookie_str = document.cookie;
 //取得されたクッキー・データを処理する。
 let cookie_arr = cookie_str.split("; ");
 //配列を繰り返し、オブジェクトに分割し、arrに入れる。
 for (let item of cookie_arr) {
 console.log(item.split("="))
 let obj = { key: item.split("=")[0], value: item.split("=")[1] };
 arr.push(obj);
 }
 return arr;
}
//hasCookie()メソッド: クッキーの値が含まれているかどうかを判断する)
Cookie.prototype.hasCookie= function (key) {
 //レコードが以下を含むかどうかを示すフラグを定義する。
 let flag = false;
 //ここでのthisは、このメソッドを使用するオブジェクトである。
 let arr = this.getCookie()
 //判定に何らかのメソッドを使う
 flag = arr.some(function (item) {
 return item.key === key;
 });
 return flag;
}
//removeCookie()メソッド: 指定されたクッキーをクリアする。
Cookie.prototype.removeCookie = function (key) {
 document.cookie = key + "=1;expires=-1";
}

1) 保管サイズ

  • クッキー:通常4K以下
  • セッションストレージ:5M以上
  • ローカルストレージ:5M以上

2) データ有効期間

  • クッキー:一般的にサーバーによって生成され、あなたは有効期限を設定することができます。あなたが時間を設定しない場合は、ブラウザのクッキーの有効期限を閉じ、時間を設定する場合は、クッキーは、ハードドライブに保存され、有効期限が切れる前に有効時間
  • sessionStorage: 現在のブラウザウィンドウを閉じたときのみ有効で、ページやブラウザを閉じるとクリアされます。
  • localStorage: 永続的、手動で永久に消去しない限り、ウィンドウまたはブラウザは閉じられるので、永続的なデータとして使用されます。

3) スコープ

  • クッキー:同じオリジンのすべてのウィンドウで共有
  • sessionStorage:同じブラウザウィンドウで共有
  • localStorage: すべての同じオリジンのウィンドウで共有されます。

4) コミュニケーション

  • ccokie:10は、httpリクエストの同じソースで運ばれ、たとえ必要とされていないので、クッキーは、ブラウザとサーバーの間で前後に渡されるので、あまりにも多くのデータを保存するためにクッキーを使用すると、パフォーマンスの問題が発生する場合
  • sessionStorage: クライアントにのみ保存され、サーバーとの通信には関与しません。
  • localStorage: クライアントにのみ保存され、サーバーとの通信には関与しません。

5) 使いやすさ

  • クッキー:自分でカプセル化する必要があります。
  • sessionStorage: ネイティブインターフェースは許容範囲内であり、カプセル化することでオブジェクトと配列のサポートを向上させることができます。
  • localStorage: ネイティブ・インターフェイスは許容範囲です。ObjectとArrayをより良くサポートするためにカプセル化することができます。
Read next

Objective-Cにおけるアトミックと非アトミック入門。

アトミックについて説明する前に、アトミックとアトミック演算が実際にどのようなものかを見ておくことが重要です。原子とは、その名前が示すように、最小の不可分な粒子です。ここではクォーク粒子を方程式から除外して、原子という言葉を象徴することができます。アトミック操作とは、1つまたは一連の不可分でブロック化された操作のことです。 Objective-Cでは、プロパティはデフォルトでアトミックです。公式ドキュメントによると...

Jun 18, 2020 · 3 min read