2012-02-17 11 views
4

ページ上のdivとイベントを結びつけるために使用される関数がいくつかあります。 MenuHandler、CalendarHandlers、PopupHandlersがあります。関数名を関数名で実行する

私はドキュメント準備関数から呼び出されたBindHandlerという関数を1つずつ持っていて、すべてのハンドラ関数を1つずつ実行します。

はその関数名でハンドラ 『を「持っているすべての関数を呼び出す』のようなものを言うでしょうワンライナーの解決策はあります

ここでの機能は次のようになります?

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 

感謝の提案を

+0

は、なぜあなたはそれを他の方法をしたいと思う:あなたはこのパターンを使用することができ

?それはおそらく、ただ一つずつ行うよりも速くなることはできません。 – GoldenNewby

+0

これらの関数は、オブジェクトのグローバル関数またはプロパティですか? –

+0

そのように、ハンドラ関数を追加すると、自動的に実行されます。 Š[email protected] – frenchie

答えて

4

これらの機能はすべてグローバルであるならば、あなたこの

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

のようなものでコール名にHandlersを持つすべての機能がここsimple demo

+0

それは本当にクールです。 1ライナーではなく、ハンドラーを登録する必要があるという問題を解決します。 – frenchie

0

バックボーンだ可能性がこれを持っている:

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

イベント・バインディングは、対応するビューが作成されたときに自動的に実行されます。

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