В исходной модели событий Level 0, когда функция регистрируется как обработ_ чик события для элемента документа, она становится методом этого элемента (как это обсуждалось ранее в разделе 17.1.5). Когда вызывается обработчик со_ бытия, он вызывается как метод элемента, и внутри функции ключевое слово this ссылается на элемент, в котором произошло событие.
Стандарт DOM Level 2 написан без учета языковых особенностей и указывает, что обработчики событий – это скорее объекты, а не простые функции. В то же вре_ мя привязка к JavaScript стандарта DOM делает обработчиками событий Java_ Script_функции, а не JavaScript_объекты. К сожалению, привязка ничего не го_ ворит о том, как вызывать функции_обработчики и какое значение должно при_ нимать ключевое слово this.
Несмотря на недостатки стандартизации, все известные реализации вызывают обработчики, зарегистрированные с помощью функции getEventListener(), как если бы они были методами целевого элемента. Таким образом, когда вызывает_ ся обработчик события, ключевое слово this ссылается на объект, в котором за_ регистрирован обработчик. Если вы предпочитаете не полагаться на это не впол_ не определенное поведение, можете воспользоваться свойством currentTarget объекта Event, который передается функции_обработчику. Далее при обсужде_ нии объекта Event вы узнаете, что свойство currentTarget ссылается на объект, в котором был зарегистрирован обработчик события.