嵌套对象,防止“无法获得'undefined'的值'”

时间:2017-01-10 16:20:47

标签: javascript json

假设我有一个名为John的对象,里面有很多其他嵌套对象,我试图按照这种方式访问​​它们

if (john.address.highstreet) {
    var highstreet = john.address.highstreet
}

但是如果address属性为null,那么我将收到错误

unable to get property 'highstreet' of undefined

我的函数执行停止

是否有一种方法可以访问嵌套属性,而无需使用如下所示的许多嵌套if语句:

if (john.address) {
    if (john.address.highstreet) {
        var highstreet = john.address.highstreet
    }
}

4 个答案:

答案 0 :(得分:6)

标准方式是

IF_APC_WSP_EXTENSION

如果地址未定义,那么将返回该地址。

答案 1 :(得分:1)

您可能希望使用更聪明的方式来访问这些属性。像getPropertyByString("john.address.highstreet")这样的东西。如果无法解析路径,此函数可能会返回null或未定义。

Alnitak's response

一样

所以你的代码看起来像这样:

var highstreet = getPropertyByString("john.address.highstreet");

答案 2 :(得分:0)

另一种方法是使用try-catch-block。

try {
    var highstreet = john.address.highstreet;
} catch (err) {
    // do error handling
}

答案 3 :(得分:0)

您还可以使用 hasOwnProperty 方法检查属性

wmic