javascript - Coffeescript/Javascript 变量作用域

标签 javascript coffeescript

我不太确定为什么我无法从 C.f() 中定义的匿名函数的上下文访问 @date (this.date) 变量

class C
  constructor: () ->
    @date = new Date()

  f: () ->
    $(document).keydown( (e) ->
      alert(@date)
    )

有人可以对此发表评论吗?

最佳答案

发生这种情况是因为在 keydown 事件处理程序中,this 值不会引用您的对象,而是引用 DOM 元素。

为此,您可以使用 =>(fat arrow),它将处理程序的 this 值绑定(bind)到父 this:

class C
  constructor: () ->
    @date = new Date()

  f: () ->
    $(document).keydown( (e) =>
      alert(@date)
    )

关于javascript - Coffeescript/Javascript 变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7062223/

相关文章:

angularjs - 编写 CoffeeScript 时如何为 AngularJS 启用 Webstorm 智能感知

node.js - node-orm 同步到 Alter Tables(类似于 DataMapper.auto_upgrade)

javascript - Mongoose 忽略对象的一部分,除非定义为 Schema.Types.Mixed

JavaScript 错误...单击按钮时未创建元素

javascript - node js可以计算两个输入字段的值并更新另一个字段吗?

javascript - Ajax 在没有用户交互的情况下以 1 秒的间隔显示文件

javascript - D3 与 CSS 过渡动画

javascript - Rails 5 上的 Turbolinks 和 jQuery 兼容性

javascript - 在 Javascript 中,为什么 undefined object 的子键返回错误而不只是未定义?

javascript - Apache Cordova 应用程序未更新