2

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

4 回答 4

10

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

result["org.apache.struts"]

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

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

alert(result.org.apache.struts);
于 2010-12-10T10:43:24.290 回答
4

问题是您将它作为一个完整的键而不是另一个对象添加,访问它就像result['org.apache.struts'].

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

var result = {
    org : {
        apache : {
            struts : '4567ty5y7u8j89hjk789'
        }
    }
    'org.apache.struts' = '4567ty5y7u8j89hjk789',
    'firstName' = 'Thorpe',
    'surName' = 'Obazee'
}
于 2010-12-10T10:44:16.117 回答
2

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

result["org.apache.struts"]

获得价值。

于 2010-12-10T10:45:12.517 回答
2

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

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

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

于 2010-12-10T10:46:51.560 回答