我有一个函数,需要等待另一个函数完成后才能被调用,因此我尝试使用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));