设置上下文的不同方式

Different ways to set context?

本文关键字:方式 上下文 设置      更新时间:2023-09-26

设置上下文有两种方法:

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

var that = this;
that.doStuff(); 

是否有理由使用其中一个而不使用另一个?

第二种方法是纯javascript。

第一个依赖于一个框架(在你的例子中是jQuery)。

没有人比别人好。

我更喜欢使用bind

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

也可以使用bind来进行转换,例如:

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

bind函数作为原生代码存在于现代浏览器中,并且比jQuery更快。代理http://jsperf.com/bind-vs-jquery-proxy

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