3

わかりました、この質問はばかげているように聞こえるかもしれませんが、JS を介して Cookie を変更する実装がないのはなぜですか。私がこれを尋ねるのは、Web 上で、Cookie を操作するための非常に恐ろしい実装をいくつか見たからです。

また、Cookie がオブジェクトとして表されないのはなぜですか? Cookie がオブジェクトとして表現されていれば、操作がはるかに簡単だったように思えます。次に、document.cookie はオブジェクトの文字列表現にすぎません。

4

2 に答える 2

1

document.cookie、単純なプロパティのように聞こえますが、実際には関数アクセス (ゲッターとセッター) を隠します。

Cookie が完全に構造化されたオブジェクトではないのはなぜですか? 理由は次のとおりだと思います。

  • localStorage の場合と同じ: Cookie がディスク上で重くならないように、非常に軽いデータのみを強制的に設定します。
  • サーバー、クライアント、およびその中間 (送信) の両方での標準的な使用法
  • 簡単な正規化プロセス...

コメントに答えるには:

  • 私はそれが正しかったとは言いません : いくつかの理由があります
  • 私は localStorage API が論理的な後継者であり、少し優れていると思います (まだ完全ではありません)。
于 2012-08-23T17:44:23.827 に答える
1

document.cookieそれが最初に実装された方法だからです。くだらない理由だとは思いますが、初期のウェブの歴史を覚えておく必要があります。新しい機能を実装した最初のブラウザーは、他のすべてのブラウザーがコピーする標準を設定しました。

null == undefinedJavaScriptとまったく同じ理由です。古いバグは必須の実装の詳細になり、誰が w3 仕様に積極的に取り組んでいるかに応じて、永遠に、または来週までそれを使い続けることになります。

JS を介して Cookie を変更する実装がないのはなぜですか?

後方互換性がないからです。明らかに、既存の実装を変更することはできないため、新しいものを作成する必要があります。新しいものを作成する際には、既存の JS コードで合理的に複製して古いブラウザーをバックフィルできるものを作成したいと考えていますが、ポリフィルを追加して機能させる必要がある場合は、わざわざ新しいものを追加する必要はありません。ブラウザへの機能?

では、これより優れた Cookie はありませんよね?

間違っています。ブラウザ、データをローカルに保存するための新しいオブジェクト実装を追加しています。これは と呼ばれlocalStorage、必要に応じて Cookie によって適切に複製できます。これにより、サーバー情報からローカル情報を分離することもできます (サーバーは、サーバーのみの Cookie の Cookie にのみ HTTP を設定できます)。

于 2012-08-23T17:50:34.610 に答える