2011-08-29 51 views
4

我试图在对象内的数组内部本地存储对象。localStorage - 将对象附加到对象数组

如果我尝试在我的控制台下面它完美的作品:

theObject = {} 
theObject.theArray = [] 
arrayObj = {"One":"111"} 
theObject.theArray.push(arrayObj) 

但是,如果我做我认为是等价的,除非存储在localStorage的结果失败:

localStorage.localObj = {} 
localStorage.localObj.localArray = [] 
stringArrayObj = JSON.stringify(arrayObj) 
localStorage.localObj.localArray.push(stringArrayObj) 

我得到以下错误...

localStorage.localObj.localArray.push(stringArrayObj) 
TypeError 
arguments: Array[2] 
message: "—" 
stack: "—" 
type: "non_object_property_call" 
__proto__: Error 

任何想法如何我可以得到这个工作?其中,关键是字符串和值字符串太

干杯

回答

10

您只能在localStorage中存储字符串。您需要对对象进行JSON编码,然后将结果字符串存储在localStorage中。当您的应用程序启动时,JSON解码您保存在localStorage中的值。

localObj = {} 
localObj.localArray = [] 
localObj.localArray.push(arrayObj) 

localStorage.localObj = JSON.stringify(localObj); 
... 
localObj = JSON.parse(localStorage.localObj); 
+0

谢谢 - 这正是我所需要的。 – user714852

2

的localStorage只能存储键 - 值对。 您可以将整个对象层次序列化为JSON并将其保存为localStorage项目。根据V8资源(我假设你使用谷歌浏览器,但希望这对其他JS引擎来说没什么不同)带有消息'non_object_property_call'的TypeError发生比调用undefined或null值的方法。