コンテキストを設定する2つの方法は次のとおりです。
$.proxy(function() {
this.doStuff();
}, this);
..。
var that = this;
that.doStuff();
一方を使用し、もう一方を使用しない理由はありますか?
コンテキストを設定する2つの方法は次のとおりです。
$.proxy(function() {
this.doStuff();
}, this);
..。
var that = this;
that.doStuff();
一方を使用し、もう一方を使用しない理由はありますか?
2番目のアプローチは純粋なJavaScriptです。
最初のものはフレームワーク(あなたの場合はjQuery)に依存しています。
他に勝るものはありません。
私はフレームワークのない2番目のものを好みます。
私はバインドを使用することを好みます。
this.ans = 42;
this.fun = function() { alert(this.ans) };
var binded_fun = this.fun.bind(this);
binded_fun() // 42
また、次のように、バインドを使用してカレーすることができます。
var sum = function(a, b) { return a + b };
var add5 = sum.bind(this, 5);
alert(add5(3)) // 8
関数'bind'は、ネイティブコードと同様に、jQuery.proxyhttp : //jsperf.com/bind-vs-jquery-proxyよりも高速な最新のブラウザーに存在します。
古いブラウザでは、 https://developer.mozilla.org/ru/docs/JavaScript/Reference/Global_Objects/Function/bindを実装できます。