私は現在、Function.applyを使用して動的な引数を持つ関数を呼び出していますが、元のコンテキストにアクセスすることはできません。自分自身で文脈を設定する私が望むのは、可変数の引数を持つ関数を呼び出して、元のコンテキストを保持できることです。元のコンテキストで未知数の引数を使用してJavascript関数を呼び出す
おそらくいくつかのコードは、私が何をしようとしているあなたが表示されるはずです:
function MulticastDelegate() {
var handlers = [];
this.event = {
subscribe: function(handler) {
if (typeof(handler) === 'function') {
handlers.push(handler);
}
},
unsubscribe: function(handler) {
if (typeof(handler) === 'function') {
handlers.splice(handlers.indexOf(handler),1);
}
}
}
this.execute = function() {
var args = Array.prototype.slice.call(arguments);
for (var handler in handlers) {
// call this with the original context of the handler
handlers[handler].apply(null, args);
}
}
}
基本的に、私はapply
の振る舞いたい - 引数の配列を渡すことができることを - call
の動作なし - 変更関数が実行されるコンテキスト。
に「バインドさ」関数を取得するには、BACKBONE.JSはそのイベントバインディング・フレームワークではまったく同じものです:http://documentcloud.github.com /backbone/docs/backbone.html#section-12 – nrabinowitz
@nrabinowitz Haha! GMTA :) –
あなたは、 'var self'メソッドなどを使って、呼び出し元が実行されるコンテキストを世話することができると思います。そうすれば、私は「これ」のためのより適切なオブジェクトを提供することができます。 –