我正在使用具有我需要测试的嵌套属性的javascript对象,比如
myObject = {
'some' : {
'nested' : {
'property' : {
'foo' : 'bar'
}
}
}
...
}
问题是myObject.some
可能不存在,也不存在myObject.some.nested
,依此类推。因此,为了测试myObject.some.nested.property.foo
的存在,我必须这样做:
if (myObject.some) {
if (myObject.some.nested) {
if (myObject.some.nested.property) {
if (myObject.some.nested.property.foo) {
// do something with myObject.some.nested.property.foo here
}
}
}
}
因为如果我if (myObject.some.nested.property.foo)
并且其中一个父属性不存在,则会抛出错误:
TypeError: 'undefined' is not an object (evaluating 'myObject.some.nested.property.foo')
有没有更好的方法来测试嵌套属性而不使用那么多if
语句?
答案 0 :(得分:0)
安全导航到它。 foo
将评估为false
,以防您无法完成任务。
var foo = myObject.some && myObject.some.nested && myObject.some.nested.property;
if(foo)
//use foo