javascript - 延迟解析后调用的函数范围

标签 javascript jquery backbone.js jquery-deferred

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

相关文章:

javascript - 使两个编辑器在自动增长时具有相同的大小

javascript - Backbone.js - 向页面呈现一个新元素

javascript - 注销时删除登录 cookie

javascript - 重定向不受支持的浏览器的最简单方法是什么?

javascript - 如何使用 JavaScript 更新兄弟复选框?

jquery - CKEditor自定义图像浏览器

backbone.js - 从 Backbone 中的模型获取中检查 404

javascript - Backbone View 渲染中的 getJSON 问题

javascript - 在 Captivate 9 中设置最大宽度

javascript - 如何使用 jQuery 在事件中重置表单元素(输入、选择、文本区域等)