javascript - 在异步调用之前在 Javascript 中保存 'this'

标签 javascript

我刚刚开始使用 Javascript、backbone 和 jquery。我的同事试图用 Javascript 解释这个概念和上下文。他说这种模式很常见,但可能有更好的方法来做到这一点。我想知道它是否真的是“标准”模式,或者是否有更好的方法。

基本上,模式是,当我在我的类里面处理正在屏幕上查看的内容时(对我们来说,它是 MVC 和主干的组合),我需要获取我的数据来填充页面。但在获取之前,我们会做

var _this = this;

由于我们执行的 ajax 调用是异步的,他说如果在我们的成功处理程序中,如果我们这样做了

this.model.property = // set some property from the callback

这不是我们想要的,也不是我们需要做的

_this.model.property = // something

我想我想知道这是否很标准。我觉得在使用了一周的 Javascript 之后,我每次从服务器获取数据时都会这样做,有时在我尝试使用下划线的 _.each 格式化我的页面之前,因为我猜我的 _.each block 中的“this”发生了变化以及。谢谢!

最佳答案

范围是 javascript 中最棘手的部分之一,基本上,这就是您 friend 所描述的内容。充分理解作用域是精通 JavaScript 的关键。查看其中一些链接以全面了解正在发生的事情:

  1. > Mozilla Article on Functions and Scope
  2. > Another good article

无论如何,我希望你喜欢 javascript,它是我个人最喜欢的语言,尤其是在 node.js 进入我的生活之后:)

编辑:

实际回答您的问题:正在发生的事情是上下文在异步模式中丢失,因此 this 的范围发生了变化。保存它可以让你以后引用它。希望这对您有所帮助!

关于javascript - 在异步调用之前在 Javascript 中保存 'this',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15565650/

相关文章:

javascript - Firebase:未捕获类型错误:无法读取属性 'signInWithEmailAndPassword'

javascript - 倒数计时器不会因clearInterval()而停止

javascript - 将模型添加到 Marionette ItemView 定义之外的主干集合

javascript - 如何在 createElement 中加载带有 document.write 的 javascript 文件?

javascript - ajax 未检测到图像裁剪

javascript - $解析 :lexerr thrown when creating an html element containing ng-click and a String link as parameter

javascript - react JS : Does my Application work correctly?

javascript - 第二次搜索后搜索结果未更新 - REACT

javascript - 如何为 jquery 自动完成框设置默认值?

javascript - 使用 CSS 在页面加载时从中心向外增长线?