2016-09-20 1 views
-1

含まれるオブジェクト内のデータをlocalStorageに保存しようとしています。私はjavascriptの変数を使用していた場合、私はこれを行うだろう: 空のlocalStorageオブジェクトを設定すると、「[object Object]」が返されます

var obj = obj || {}; 
obj.fname = 'bob'; 
console.log(obj.fname) // => "bob" 

しかし localStorage

window.localStorage.obj = window.localStorage.obj || {} 
window.localStorage.obj.fname = 'bob'; 
console.log(window.localStorage.obj.fname) // => "[object Object]" 

でこれをやろうとしないのはなぜlocalStorageため、これと同じ手法で動作しますか?これを行う方法はありますか?あなたが読むため

その後

window.localStorage.obj = JSON.stringify({fname: 'bob});

に必要なので、

+7

'localStorage'ことができる唯一の店舗の文字列を設定する前{fname: 'bob'}JSON.stringifyを呼び出すので、あなたは、例えば、オブジェクトをシリアル化する必要がありますJSON.stringifyを使用してください。 – redneb

+0

あなたは彼のコメントを実際に読んでましたか?回答として@redneb投稿 –

答えて

3

をそれを解析する必要がある唯一のプレーンな文字列を格納することができますそれはlocalstorageにあります。 それが必要なときはJSON文字列をJSON.parseする必要があります。

var obj = { 
    b : 2 
}; 
window.localStorage.obj = JSON.Stringify(obj); 
var returnObj = JSON.parse(window.localStorage.obj); 
2

のlocalStorageはあなたがオブジェクトとストアを文字列化する必要が戻ってそう

var obj = JSON.parse(window.localStorage.obj); console.log(obj.fname);

1

thisに記載されているように、すべてがローカルストレージに文字列形式で格納されています。したがって、あなたのケースではtoStringメソッドが設定される前にobjで呼び出されています。いくつかのキーの下でローカルストレージ内のオブジェクトを設定することは避けるべきです。 localstorage.setItem('fname', 'bob')を使用してのlocalStorageにキーfnameの下に値bobを設定してみてくださいかのlocalStorageにobjキーで

関連する問題