1

如果可能的话,我希望能够使用速记符号从中获取项目localStorage,然后JSON.parse()在其上使用。

在下面的代码中,如果我使用以下代码,它可以工作:

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

我的所有代码都在 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 回答