1

可能であれば、簡略表記を使用してアイテムを取得しlocalStorage、それを使用できるようにしたいと考えJSON.parse()ています。

以下のコードでは、次を使用すると機能します。

var retrievedObject = JSON.parse(localStorage.getItem('testObject')); //works

ただし、次の 2 つの省略形オプションのいずれかを使用すると、機能しません。

var retrievedObject = JSON.parse(localStorage.testObject); //doesn't work

var retrievedObject = JSON.parse(localStorage['testObject']); //doesn't work

私のコードはすべて jsFiddle の下にあります: http://jsfiddle.net/TestB/1/

//var retrievedObject = JSON.parse(localStorage.getItem('testObject')); //works
var retrievedObject = JSON.parse(localStorage.testObject); //doesn't work
//var retrievedObject = JSON.parse(localStorage['testObject']); //doesn't work

if (retrievedObject == null) {

  var testObject = { 'one': 1, 'two': 2, 'three': 3 };

  // Put the object into storage
  localStorage.testObject = JSON.stringify(testObject);

}

else {

 retrievedObject.four = 4;

 // Put the object into storage
 localStorage.testObject = JSON.stringify(retrievedObject);

}
// Retrieve the object from storage
var retrievedObject = JSON.parse(localStorage.getItem('testObject'));

console.log('retrievedObject: ', retrievedObject);​
4

1 に答える 1

2

localStorage.testObjectこの問題は、がまだ定義されていないときに初めて発生します。

その場合localStorage.testObjectは未定義でありJSON.parse、その引数で失敗します

一方、getItemメソッドはこれを内部的に処理し、null..

あなたが使用することができますJSON.parse(localStorage.testObject || null)

于 2012-09-27T14:59:36.610 に答える