我有一个函数,需要等待另一个函数完成后才能被调用,因此我尝试使用jquery deferred。因此,例如:

firstFunction().done(secondFunction)


但是secondFunction在其范围内具有this关键字的某些用法,因此当通过done调用它时,它无权使用适当的this属性。这些功能更多地放在不同的文件中。有没有办法使用适当的secondFunction属性调用this

最佳答案

是的,您可以将函数绑定到正确的上下文。

对于IE9及更高版本,您可以为此使用本机Javascript,即Function.prototype.bind

firstFunction().done(secondFunction.bind(this));


如果出于某种原因要支持IE8,则您需要对其进行填充(上面的mdn页面上有用于此的食谱),或者可以使用underscore's bind,因为主干需要它。

firstFunction().done(_.bind(secondFunction, this));

09-30 16:08