按功能名称执行功能列表

时间:2012-02-17 23:03:00

标签: javascript

我有几个函数用于将事件与页面上的div绑定。有MenuHandlers,CalendarHandlers,PopupHandlers ....

所以目前,我有一个名为BindHandlers的函数,我从文档就绪函数调用它,并逐个运行所有处理函数。

是否有单行解决方案可以说“在函数名称中调用所有具有”处理程序“的函数?

这是函数的样子:

function BindHandlers() {
  MenuHandlers();
  CalendarHandlers();
  PopupHandlers();
  ... 8 more like this
}

我想要取代:

BindHandlers(); // replace that line with the following:
"call all the functions that have "Handlers" in their names

感谢您的建议。

2 个答案:

答案 0 :(得分:4)

如果这些功能都是全局的,那么可以使用名称中的Handlers来调用所有函数

for (var x in window)
    if (typeof window[x] === 'function' && /Handlers/.test(x))
         window[x]();

这是simple demo

答案 1 :(得分:0)

Backbone有这个:

events: {
    'click #menu'       : 'MenuHandler',
    'click #calendar'   : 'CalendarHandler',
    // etc.
}

创建相应视图时会自动执行事件绑定。

您可以使用此模式:

bindEvents({
    'click #menu'       : 'MenuHandler',
    'click #calendar'   : 'CalendarHandler',
    // etc.
});