【问题标题】:localStorage - append an object to an array of objectslocalStorage - 将对象附加到对象数组
【发布时间】:2011-08-29 18:30:24
【问题描述】:

我正在尝试将对象本地存储在对象内的数组中。

如果我在控制台中尝试以下操作,它会完美运行:

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

知道如何让它工作吗?

干杯

【问题讨论】:

    标签: javascript client-side local-storage


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢 - 这正是我所需要的。
    【解决方案2】:

    LocalStorage 只能存储键为字符串且值也为字符串的键值对。 您可以将整个对象层次结构序列化为 JSON 并将其保存为 localStorage 项。

    根据 V8 来源(我假设您使用 Google Chrome,但希望这与其他 JS 引擎没有什么不同)消息“non_object_property_call”的 TypeError 发生比调用未定义或 null 值的方法。

    【讨论】:

      猜你喜欢
      • 2016-06-28
      • 1970-01-01
      • 2020-08-15
      • 2013-11-07
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多