【问题标题】:unable to access sub-properties of an object.无法访问对象的子属性。
【发布时间】:2013-01-31 12:49:45
【问题描述】:

我有一个类似于以下内容的 javascript 对象:

“someObject” : {
    “A” : { “id” : “323klj”, “name” : “subObject1”, “value” : “0” }
    “B” : { “id” : “63sdf”, “name” : “subObjectB”, “value” : “9” }
}

我正在尝试访问子对象的“值”属性。但是,当我像这样访问它们时

console.log(someObject.A.value)  

结果未定义。

如果我尝试像这样(一行接一行)将以下内容输出到控制台

console.log(someObject)
console.log(someObject.A) 
console.log(someObject.A.value) 

在控制台中,我将看到以下内容:

-第一行:someObject 将按预期显示,所有子对象和属性都完好无损

-第二行:我会看到子对象A,但是缺少“值”属性

-第三行:未定义。

我的问题是,有人对可能导致这种情况发生的原因有任何想法吗?我很难解决这个问题,我什至不明白这怎么可能。我知道这应该在正常情况下工作。仅供参考:这是一个更大的主干应用程序的一部分,我也在其中使用 jquery mobile。这可能与这些框架之一有关吗? (实际代码太复杂,这里无法粘贴,我只是想举个例子来说明是怎么回事)。

【问题讨论】:

  • 对象是如何生成的?属性是怎么设置的?会不会是 value 是通过 Ajax 填充的,而您正试图访问它设置的 before 属性?一些控制台有一种奇怪的评估对象的方式,所以你不应该相信每一个输出。
  • 感谢菲利克斯的建议

标签: javascript jquery jquery-mobile backbone.js


【解决方案1】:

这对我有用:

var someObject = {
    A : { id : "323klj", name : "subObject1", value : "0" },
    B : { id : "63sdf", name : "subObjectB", value : "9" }
}
console.log(someObject.A.value); //returns 0
console.log(someObject.B.value); //returns 9

注意:复制粘贴您的文本我必须更改双引号,在我的浏览器中它们显示为“”所以我将它们更改为“

【讨论】:

  • 感谢 w3jimmy 的检查,我确信代码是有效的,只是我的应用程序出了点问题。奇怪的引号是由于我在其中写出问题的文本编辑器造成的。
【解决方案2】:

好吧,我最终使用了一种解决方法,所以我讨厌让其他人花时间在这个问题上并将其标记为已回答,但我仍然很困惑发生了什么......

【讨论】:

    猜你喜欢
    • 2020-08-02
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2019-10-06
    • 2016-07-22
    相关资源
    最近更新 更多