Coffeescript / Javascript переменная область видимости - PullRequest
5 голосов
/ 15 августа 2011

Я не совсем уверен, почему у меня нет доступа к переменной @date (this.date) из контекста анонимной функции, определенной в Cf ()

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

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

Может кто-то прокомментироватьчто?

1 Ответ

9 голосов
/ 15 августа 2011

Это происходит потому, что внутри обработчика событий keydown значение this не будет ссылаться на ваш объект, оно будет ссылаться на элемент DOM.

Для этой цели вы можете использовать => (жирная стрелка ), которая свяжет значение this обработчика с родительским this:

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

  f: () ->
    $(document).keydown( (e) =>
      alert(@date)
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...