2016-12-22 8 views
0

私は(DOMのものではない)リッスンしている一連のイベントと、イベントハンドラ関数を含むオブジェクトを持っています。JavaScriptプリセット関数のパラメータ

一般的に私は、私はすべてのイベントリスナーのために変更するハンドラにパラメータを渡すために持っていることを除いて

whenEventOccurs('event-name', handler.eventName)

ような何かをしたいです。

Function.prototype.bind()のようなものを探していますが、これはthisに設定されていませんが、可能であれば最初のパラメータが設定されています。

何のクリーンソリューションが存在しない場合、私は常に次のことを行うことができますが、私は可能であればそれを避けるしたいと思います:

whenEventOccurs('event-name', function(foo, bar, baz){ 
    handler.eventName(specialParam, foo, bar, baz); 
}); 
+0

必要なバインディングを持つ関数を返すことができます – Rajesh

答えて

2

あなたはbind()

と同様に動作機能でそれをカプセル化することができます
function bindArg1(func, arg1) { 
    return function() { 
     var args = [].slice.call(arguments); 
     args.unshift(arg1); 
     return func.apply(this, args); 
    } 
} 

whenEventOccurs('event-name', bindArg1(handler.eventName, specialParam)) 
+0

特別なパラメータ以外のパラメータはどのように渡すのですか? – Tobsta

+0

また、 'this'スコープは使用できません。つまり、ハンドラで他のものを参照することはできません。 – Tobsta

+0

他のパラメータを渡す場合は、質問に書いたコードを使用してください。 – Barmar

関連する問題