【发布时间】:2015-12-03 13:29:31
【问题描述】:
如果存在,我想调用给定的函数。我写过:
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 的加载器。
【问题讨论】:
-
查看此处获取嵌套路径stackoverflow.com/questions/6491463/…。然后检查它是否是一个函数,如果是则执行它。
-
没有更多的......原生?不幸的是(具有讽刺意味的是?),此代码用作 lodash 的加载器,因此我无法在这种情况下使用实用程序库。否则,lodash.com/docs#get
-
你不需要图书馆,
get=(p,o)=>p.reduce((a,k)=>a&&a[k],o); get(['a','b','c'],{a:{b:{c:1}}}) // 1 -
您也可以从 lodash 中提取该方法并放入您自己的代码中...
标签: javascript