我有一个函数需要等待另一个函数完成才能调用,因此我尝试使用jquery deferred
。例如:
firstFunction().done(secondFunction)
但是 secondFunction
在其范围内使用了 this
关键字,因此当通过 done
调用它时,它无法访问正确的这个
属性。更多这些函数被放置在不同的文件中。有没有办法使用正确的 this
属性调用 secondFunction
?
最佳答案
是的,您可以将函数绑定(bind)到正确的上下文。
对于 IE9 及更高版本,您可以使用 native Javascript 来实现此目的,即 Function.prototype.bind
firstFunction().done(secondFunction.bind(this));
如果由于某种原因你支持 IE8,那么你要么需要填充它(上面链接的 mdn 页面上有一个方法),要么你可以使用 underscore's bind由于主干网需要它,因此应该可用。
firstFunction().done(_.bind(secondFunction, this));
关于javascript - 延迟解析后调用的函数范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33034580/