Coffeescript/Javascript变量范围

Coffeescript/Javascript variable scope

本文关键字:范围 变量 Javascript Coffeescript      更新时间:2023-09-26

我真的不知道为什么我不能从C.f()中定义的匿名函数的上下文中访问@date (this.date)变量

class C
  constructor: () ->
    @date = new Date()
  f: () ->
    $(document).keydown( (e) ->
      alert(@date)
    )

有人能评论一下吗?

这是因为在keydown事件处理程序中,this值将不指向您的对象,它将指向DOM元素。

为此,您可以使用=>(胖箭头),它将把处理程序的this值绑定到父this:

class C
  constructor: () ->
    @date = new Date()
  f: () ->
    $(document).keydown( (e) =>
      alert(@date)
    )