1

コンテキストを設定する2つの方法は次のとおりです。

$.proxy(function() { 
  this.doStuff();
}, this);

..。

var that = this;
that.doStuff(); 

一方を使用し、もう一方を使用しない理由はありますか?

4

2 に答える 2

0

2番目のアプローチは純粋なJavaScriptです。

最初のものはフレームワーク(あなたの場合はjQuery)に依存しています。

他に勝るものはありません。

私はフレームワークのない2番目のものを好みます。

于 2013-01-14T16:34:00.283 に答える
0

私はバインドを使用することを好みます。

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を実装できます。

于 2013-01-14T16:50:40.637 に答える