2010-12-10 83 views
2

我在JavaScript中阅读Javascript对象

var result = { 
    'org.apache.struts' : '4567ty5y7u8j89hjk789', 
    'firstName' : 'Thorpe', 
    'surName' : 'Obazee' 
} 

下面的代码当我尝试读取结果:

// this works 
sys.puts(result.firstName) // returns Thorpe 
sys.puts(result.surName) // returns Obazee 

问题是当我读了其他财产

sys.puts(result.org.apache.struts) // return an error 

Error: Expected 'TypeError: Cannot read property 'apache' of undefined

我应该如何阅读这个以便我可以交流放下我放的信息?

+0

当你说“这有效”时,我假设你没有复制和粘贴代码,因为你的对象字面值不应该使用'='符号来区分名称和值(它应该是一个':')。 – 2010-12-10 10:48:13

+1

@Andy E.哈哈。对于那个很抱歉 。我正在写而不是看代码。固定。 – 2010-12-10 10:58:12

回答

9

您可以使用bracket notation访问其名称包含点符号无效字符属性:

result["org.apache.struts"] 

如果您想进一步的水平添加到您的对象,以便您可以使用点符号,你需要声明另一个对象为每个级别,例如:

var result = { 
    org: { apache: { struts: '4567ty5y7u8j89hjk789' } }, 
    firstName: 'Thorpe', 
    surName: 'Obazee' 
} 

alert(result.org.apache.struts); 
+1

+1 - 进一步阅读:https://developer.mozilla.org/en/JavaScript/Reference/Operators/Member_Operators#Bracket_notation – 2010-12-10 10:44:04

+0

@Downvoter:小心解释我的答案有哪些不正确的地方? – 2010-12-10 10:53:24

3

的问题是,您要添加它作为一个整体,而不是关键的另一个目的,访问它像result['org.apache.struts']

或者你也可以改变你创建结果的方式:

var result = { 
    org : { 
     apache : { 
      struts : '4567ty5y7u8j89hjk789' 
     } 
    } 
    'org.apache.struts' = '4567ty5y7u8j89hjk789', 
    'firstName' = 'Thorpe', 
    'surName' = 'Obazee' 
} 
2

的问题是,您的变量中有圆点。我想,JavaScript的要求解释这是嵌套的对象,这是不是真的存在。因此,使用

result["org.apache.struts"] 

以获得该值。

2

您必须在对象的标签和值之间使用':',并将'org.apache'定义为对象。就像这样:

var result = { 
    org: {apache: {struts: '4567ty5y7u8j89hjk789'}}, 
    firstName: 'Thorpe', 
    surName: 'Obazee' 
} 

如果你想给我们“org.apache.struts”作为一个真正的标签,安迪·E公司的回答是解决方案。