检查是否存在深深嵌入在可能不存在的对象中的函数?

时间:2015-09-08 01:38:33

标签: javascript

如果存在,我想调用给定的函数。我写过:

var backgroundPage = window.chrome && chrome.extension &&
 chrome.extension.getBackgroundPage ? chrome.extension.getBackgroundPage() : null;

我想知道是否有更好的方法可以将所有这些检查短路,如果存在则只调用chrome.extension.getBackgroundPage

如果我这样做

typeof chrome.extension.getBackgroundPage === 'function'

如果 chrome chrome.extension 未定义,我仍会遇到错误。

在许多情况下,我可以使用实用功能,例如https://lodash.com/docs#get

var getBackgroundPage = _.get(window, 'chrome.extension.getBackgroundPage');

但是对于我的特定情况,我无法使用实用程序库,因为完整代码用作lodash的加载程序。

1 个答案:

答案 0 :(得分:1)

这是try...catch陈述的目的:

try {
  object.p1.p2.p3;
}
catch (e) {
  if (e.name === 'ReferenceError') {
    // pass
  }
}