[解決済み] JavascriptのオブジェクトをsessionStorageに保存する
2022-04-22 21:05:49
質問
SessionStorageとLocalStorageは、Webブラウザでキーと値のペアを保存することができます。値は文字列でなければならず、jsオブジェクトの保存は簡単ではありません。
var user = {'name':'John'};
sessionStorage.setItem('user', user);
var obj = sessionStorage.user; // obj='[object Object]' Not an object
現在では、オブジェクトをJSONにシリアライズし、デシリアライズしてオブジェクトを復元することで、この制限を回避することができます。しかし、Storage APIは常に
setItem
と
getItem
メソッドを使用します。
sessionStorage.setItem('user', JSON.stringify(user));
var obj = JSON.parse(sessionStorage.getItem('user')); // An object :D
この制限を回避することはできますか?
こんな感じで実行したいんだけど。
sessionStorage.user.name; // 'John'
sessionStorage.user.name = 'Mary';
sessionStorage.user.name // 'Mary'
を試してみました。
defineGetter
と
defineSetter
というのも、すべてのプロパティを定義しなければならず、私のターゲットは将来のプロパティを知ることができないからです。
解決方法は?
Web Storage API が提供するアクセサを使用するか、ラッパー/アダプターを作成するかのどちらかです。defineGetter/defineSetter の問題からすると、 ラッパーやアダプタを書くのは面倒くさそうですね......。
正直なところ、なんと言っていいかわかりません。何が「馬鹿げた制限」なのか、ご自分の意見をもう一度見直してみてはいかがでしょうか。Web Storage APIは、キー/バリューストアとして想定されているものです。
関連
-
元のイベントが実行されなかった後に要素を追加するためのjQueryソリューション
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JSクロスドメインソリューション リアクト構成 リバースプロキシ
-
Vueがechartsのtooltipにクリックイベントを追加するケーススタディ
-
HTML+CSS+JavaScriptで簡単な三目並べゲームを作成する。
-
jQueryのコピーオブジェクトの説明
-
Vueにシンプルなメモ帳機能を実装
-
vue ディレクティブ v-html と v-text
-
vueにおけるv-forループオブジェクトのプロパティ
-
[解決済み】リクエストに失敗していないのに、「TypeError: failed to fetch」が表示される。
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された