0

このコードでは、トリガーは次に topbar.resize を呼び出しますか、それとも単にそこに含まれる関数を実行するだけですか? 両者には文脈上の違いがあると思いますが、それはどのように機能しますか?

jQuery.bind("hideBackstage", topbar.resize);

編集:単に topbar.resize を呼び出すにはどうすればよいですか?

4

3 に答える 3

1

呼び出しはと同等になります

topbar.resize.call(touchedElement, jqueryWrappedEvent);

つまり、「含まれている」関数は、topbar.resizeレシーバー(this)でイベントを受信した要素とパラメーターでイベント(jqueryイベントとしてラップされている)で呼び出されます。

これはとは異なります

topbar.resize()

なぜなら

  • 受信者(this)はtopbar
  • イベントはパラメータとして提供されます

あなたの編集に続いて編集:

呼び出しをと同等にしたい場合は、次のようにしますtopbar.resize()

jQuery.bind("hideBackstage", function(){topbar.resize()});
于 2012-09-26T12:59:21.433 に答える
0

jQueryプロキシまたは

jQuery.bind("hideBackstage", function(){
    topbar.resize.apply(topbar, arguments); // seting context as topbar for resize.
});
于 2012-09-26T12:59:31.497 に答える
0

を使用できます$.proxy()(これはおかしなことに に似ていFunction.prototype.bind()ます)。

jQuery.bind("hideBackstage", $.proxy(topbar.resize, topbar));

ただし、eventオブジェクトにはアクセスできません。

于 2012-09-26T13:01:34.840 に答える