设置上下文的不同方法?

时间:2013-01-14 16:30:29

标签: javascript jquery

以下是设置上下文的两种方法:

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

...

var that = this;
that.doStuff(); 

有没有理由使用一个而不是另一个?

2 个答案:

答案 0 :(得分:0)

第二种方法是纯粹的javascript。

第一个依赖于框架(在你的情况下为jQuery)。

没有人比其他人更好。

我更喜欢第二个没有框架的。

答案 1 :(得分:0)

我更喜欢使用bind。

this.ans = 42;
this.fun = function() { alert(this.ans) };
var binded_fun = this.fun.bind(this);
binded_fun() // 42

您也可以使用bind进行сurrying,例如:

var sum = function(a, b) { return a + b };
var add5 = sum.bind(this, 5);
alert(add5(3)) // 8

函数'bind'和现有代码一样存在于现代浏览器中,比jQuery.proxy http://jsperf.com/bind-vs-jquery-proxy更快

在旧版浏览器中,您可以实现它https://developer.mozilla.org/ru/docs/JavaScript/Reference/Global_Objects/Function/bind