阅读Javascript对象

时间:2010-12-10 10:41:08

标签: javascript javascript-objects

我在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
  

错误:预期'TypeError:不能   读取未定义的属性'apache'

我该怎么读这个以便我可以访问我提供的信息?

4 个答案:

答案 0 :(得分:9)

您可以使用bracket notation访问名称中包含对点表示法无效的字符的属性:

result["org.apache.struts"]

如果要为对象添加更多级别以便可以使用点表示法,则需要为每个级别声明另一个对象,例如:

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

alert(result.org.apache.struts);

答案 1 :(得分:3)

问题是您将其作为整个密钥而不是其他对象添加,请像result['org.apache.struts']一样进行访问。

或者您可以更改创建结果的方式:

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

答案 2 :(得分:2)

问题是你的变量中有点。我猜想javascript要求将其解释为实际上不存在的嵌套对象。所以,使用

result["org.apache.struts"]

获得价值。

答案 3 :(得分:2)

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

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

如果你想让我们'org.apache.struts'作为一个真正的标签,Andy E的答案就是解决方案。