2013-01-31 50 views
1

我已经建立了与下面类似的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将显示如预期的所有子对象和属性完整

- 第二行:我会看到子对象的,但“价值”属性缺失

- 第三行:未定义。

我的问题是有人有什么想法可能会使这种情况发生?我很难解决这个问题,我不明白这怎么可能。我知道这应该在正常情况下工作。仅供参考:这是我使用jQuery Mobile的一个更大的骨干应用程序的一部分。这可能与这些框架之一有关吗? (实际的代码太复杂了,不能粘贴在这里,我只是想举一个例子来说明发生了什么)。

+3

对象是怎样的生成?属性如何设置?是否可以通过Ajax填充“值”,并且您正在尝试访问*之前的属性*设置?一些控制台有一种评估对象的奇怪方式,所以你不应该相信每个输出。 –

+0

感谢您的建议Felix – Occam

回答

2

这个工作对我来说:

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 

注:复制粘贴文本,我不得不改变了双引号,在浏览器中,他们显示为“”所以我改变他们“

+0

感谢您查看w3jimmy,我相当确信代码是有效的,只是我的应用程序出了问题。奇怪的引语是由于我编写了一个文本编辑器写出了这个问题。 – Occam

1

嗯,我最终使用了一种解决方法,所以我讨厌让这个人有腰部时间,并将其标记为答案,但仍然是相当令我费解的是,我正在发生什么事...