假设我要访问a.b.c.d
,但我不确定b
或c
是否存在。最简单的检查方法是:
if (a.b && a.b.c && a.b.c.d == 5) doSomething(a.b.c.d);
我考虑了一下并编写了这个函数来改进它:
Object.prototype.parse = function (keys, def) {
return keys.split('.').reduce(function (prev, curr) {
if (prev) {
return prev[curr];
}
}, this) || def;
};
你可以像这样使用它:
var a = {
b: {
c: {
d: 5
}
}
};
console.log(a.parse('b.c.d', 3)); // If b, c or d are undefined return 3
但我在想是否有更好的本地方法来实现这一点,而不必将此函数添加到项目中。
谢谢!
var x = a.b.c.d
。它将成功、抛出异常或返回undefined
(如果仅丢失了d
)。 - jfriend00dotty
的库可以用来处理这种事情。 - Paula.b.c
的属性字符串,又进行所谓的“存在性检查”a && a.b && a.b.c
。搜索它们。 - user663031