1

あるプロトタイプ関数を別のプロトタイプ関数で呼び出すことについて質問があります。

たとえば、2 つのプロトタイプ関数を持つ基本的なスライダーがあるとします。

function Slider() {

}

Slider.prototype.transition = function() {

}

Slider.prototype.setTargets = function() {

}

遷移関数内でsetTargets関数を呼び出す適切な方法は何ですか?次のようなものです:

Slider.prototype.transition = function() {
   this.target.fadeOut('normal', function() {
      // call setTargets?  
      this.setTargets(); // errors when i do this
   });
}

助けてくれてありがとう

4

2 に答える 2

1

this.targetが jQuery オブジェクトの場合、 のコールバックがDOMNode としてfadeOut呼び出されます。this

代わりにこれを行います:

Slider.prototype.transition = function() {
   var me = this;
   this.target.fadeOut('normal', function() {
      me.setTargets(); // <-- See me
   });
}

への初期化されたすべての参照の名前を選択しました。私はDomNodesなどに使用したことはありません。私にとっては理にかなっています。that methisthat me

この点に関する今後の見解については、コメントを参照してください。

編集:

実は私は使っmeていませんthat- 何を考えているのかわからない?? !


そしてコメントのために:

Slider.prototype.transition = function() {
   var me = this;
   this.target.fadeOut('normal', function() {
      var domThis = this;
      me.setTargets(); // <-- See me
      setTimeout(function() {
          // Use domThis [Dom Node]
      }, 123);
   });
}

または:

これの jQuery オブジェクトを作成できます。

      var $this = $(this);
      me.setTargets(); // <-- See me
      setTimeout(function() {
          // Use $this [jQuery Object]
      }, 123);

この jQuery オブジェクトが必要な場合は、以下を参照できます。me.target

      me.setTargets(); // <-- See me
      setTimeout(function() {
          // Use me.target [jQuery Object]
      }, 123);
于 2012-07-20T17:34:28.373 に答える
0

fadeOut関数は、オブジェクトのコンテキストでは呼び出されませんslider

Slider.prototype.transition = function() {
    var slider = this;
    this.target.fadeOut('normal', function() {
        // call setTargets?  
        slider.setTargets(); // should work now.
    });
}
于 2012-07-20T17:35:54.400 に答える