2

私の「クラス」メソッドでは、JavaScript の「ソート」関数と比較関数を使用します。

this.models.sort(this.comparator);

ソート関数がコンパレータを呼び出すとき、コンパレータのコンテキスト/「this」を定義することは可能ですか?

私はそれがこのようにできることを知っています:

var self = this;
this.models.sort(function(a, b){return self.comparator.call(self, a, b);});

しかし、誰かがより簡単な方法を知っていますか?

事前に感謝します

4

2 に答える 2

5

bindを使用できます:

 this.models.sort(this.comparator.bind(this));

bind渡されたコンテキストで実行される新しいバインドされた関数を構築します。

これは IE8 と互換性がないため、通常はクロージャー ソリューションが採用されます。しかし、もっと簡単にすることができます:

var self = this;
this.models.sort(function(a, b){return self.comparator(a, b);});
于 2013-01-23T12:19:54.603 に答える
2

これを行うには、次を使用しbindます。

this.models.sort(this.comparator.bind(context));
于 2013-01-23T12:20:14.843 に答える