このコードでは、トリガーは次に topbar.resize を呼び出しますか、それとも単にそこに含まれる関数を実行するだけですか? 両者には文脈上の違いがあると思いますが、それはどのように機能しますか?
jQuery.bind("hideBackstage", topbar.resize);
編集:単に topbar.resize を呼び出すにはどうすればよいですか?
このコードでは、トリガーは次に topbar.resize を呼び出しますか、それとも単にそこに含まれる関数を実行するだけですか? 両者には文脈上の違いがあると思いますが、それはどのように機能しますか?
jQuery.bind("hideBackstage", topbar.resize);
編集:単に topbar.resize を呼び出すにはどうすればよいですか?
呼び出しはと同等になります
topbar.resize.call(touchedElement, jqueryWrappedEvent);
つまり、「含まれている」関数は、topbar.resize
レシーバー(this
)でイベントを受信した要素とパラメーターでイベント(jqueryイベントとしてラップされている)で呼び出されます。
これはとは異なります
topbar.resize()
なぜなら
this
)はtopbar
あなたの編集に続いて編集:
呼び出しをと同等にしたい場合は、次のようにしますtopbar.resize()
。
jQuery.bind("hideBackstage", function(){topbar.resize()});
jQueryプロキシまたは
jQuery.bind("hideBackstage", function(){
topbar.resize.apply(topbar, arguments); // seting context as topbar for resize.
});
を使用できます$.proxy()
(これはおかしなことに に似ていFunction.prototype.bind()
ます)。
jQuery.bind("hideBackstage", $.proxy(topbar.resize, topbar));
ただし、event
オブジェクトにはアクセスできません。