LocalStorage使用点/括号表示法获取项目不使用JSON.parse()

时间:2012-09-27 14:39:26

标签: javascript json local-storage stringify

如果可能,我希望能够使用简写表示法从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);​

1 个答案:

答案 0 :(得分:2)

第一次出现问题时,localStorage.testObject尚未定义..

在这种情况下,localStorage.testObject未定义,JSON.parse失败并带有该参数

另一方面,getItem方法在内部处理此问题并返回null ..

您可以使用JSON.parse(localStorage.testObject || null)