Coffeescript / Javascript变量范围

时间:2011-08-15 06:28:42

标签: javascript coffeescript

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

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

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

有人会对此发表评论吗?

1 个答案:

答案 0 :(得分:9)

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

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

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

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