测试对象中是否存在嵌套属性的更好方法

时间:2014-05-05 19:53:49

标签: javascript

我正在使用具有我需要测试的嵌套属性的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语句?

1 个答案:

答案 0 :(得分:0)

安全导航到它。 foo将评估为false,以防您无法完成任务。

var foo = myObject.some && myObject.some.nested && myObject.some.nested.property;
if(foo)
    //use foo

http://jsfiddle.net/Y7LFp/