わかりました、この質問はばかげているように聞こえるかもしれませんが、JS を介して Cookie を変更する実装がないのはなぜですか。私がこれを尋ねるのは、Web 上で、Cookie を操作するための非常に恐ろしい実装をいくつか見たからです。
また、Cookie がオブジェクトとして表されないのはなぜですか? Cookie がオブジェクトとして表現されていれば、操作がはるかに簡単だったように思えます。次に、document.cookie はオブジェクトの文字列表現にすぎません。
わかりました、この質問はばかげているように聞こえるかもしれませんが、JS を介して Cookie を変更する実装がないのはなぜですか。私がこれを尋ねるのは、Web 上で、Cookie を操作するための非常に恐ろしい実装をいくつか見たからです。
また、Cookie がオブジェクトとして表されないのはなぜですか? Cookie がオブジェクトとして表現されていれば、操作がはるかに簡単だったように思えます。次に、document.cookie はオブジェクトの文字列表現にすぎません。
document.cookie
、単純なプロパティのように聞こえますが、実際には関数アクセス (ゲッターとセッター) を隠します。
Cookie が完全に構造化されたオブジェクトではないのはなぜですか? 理由は次のとおりだと思います。
コメントに答えるには:
document.cookie
それが最初に実装された方法だからです。くだらない理由だとは思いますが、初期のウェブの歴史を覚えておく必要があります。新しい機能を実装した最初のブラウザーは、他のすべてのブラウザーがコピーする標準を設定しました。
null == undefined
JavaScriptとまったく同じ理由です。古いバグは必須の実装の詳細になり、誰が w3 仕様に積極的に取り組んでいるかに応じて、永遠に、または来週までそれを使い続けることになります。
JS を介して Cookie を変更する実装がないのはなぜですか?
後方互換性がないからです。明らかに、既存の実装を変更することはできないため、新しいものを作成する必要があります。新しいものを作成する際には、既存の JS コードで合理的に複製して古いブラウザーをバックフィルできるものを作成したいと考えていますが、ポリフィルを追加して機能させる必要がある場合は、わざわざ新しいものを追加する必要はありません。ブラウザへの機能?
では、これより優れた Cookie はありませんよね?
間違っています。ブラウザは、データをローカルに保存するための新しいオブジェクト実装を追加しています。これは と呼ばれlocalStorage
、必要に応じて Cookie によって適切に複製できます。これにより、サーバー情報からローカル情報を分離することもできます (サーバーは、サーバーのみの Cookie の Cookie にのみ HTTP を設定できます)。