我在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'
我该怎么读这个以便我可以访问我提供的信息?
答案 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的答案就是解决方案。