以下是设置上下文的两种方法:
$.proxy(function() {
this.doStuff();
}, this);
...
var that = this;
that.doStuff();
有没有理由使用一个而不是另一个?
答案 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