如果可能,我希望能够使用简写表示法从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);
答案 0 :(得分:2)
第一次出现问题时,localStorage.testObject
尚未定义..
在这种情况下,localStorage.testObject
未定义,JSON.parse
失败并带有该参数
另一方面,getItem
方法在内部处理此问题并返回null
..
您可以使用JSON.parse(localStorage.testObject || null)