【问题标题】:executing a list of functions by their function name按函数名执行函数列表
【发布时间】:2012-02-17 23:02:59
【问题描述】:

我有几个函数用于将事件与页面上的 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

感谢您的建议。

【问题讨论】:

  • 您为什么要采用其他方式?它不可能比一个一个地做更快。
  • 这些函数是您的某个对象的全局函数或属性吗?
  • 因为那样的话,如果我添加 Handlers 函数,它们就会自动执行。
  • @ŠimeVidas:他们都是全球性的

标签: javascript


【解决方案1】:

如果这些函数都是全局的,您可以调用名称中带有Handlers 的所有函数,类似这样

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

这是simple demo

【讨论】:

  • 好的,这真的很酷;不是单线,但仍然解决了必须注册处理程序的问题。
【解决方案2】:

Backbone 有这个:

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

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

你可以使用这个模式:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多