Если обработчик события определен с помощью HTML_атрибута или JavaSсript_ свойства, ваши действия состоят в присваивании функции свойству элемента до_ кумента. Другими словами, вы определяете новый метод элемента документа. Ваш обработчик события вызывается как метод элемента, в котором произошло событие, поэтому ключевое слово this ссылается на этот целевой элемент. Это поведение полезно и не удивительно.
Однако убедитесь, что понимаете следствия этого поведения. Предположим, у вас есть объект o с методом mymethod. Обработчик события можно зарегистрировать следующим образом:
button.onclick= o.mymethod;
В результате выполнения этой инструкции свойство button.onclick будет ссы_ латься на ту же функцию, что и o.mymethod. Эта функция теперь является мето_ дом и для o, и для button. Вызывая этот обработчик события, броузер вызывает функцию как метод объекта button, а не объекта o. Ключевое слово this ссылает_ ся на объект Button, а не на ваш объект o. Не ошибитесь, думая, что можно обма_ нуть броузер, вызвав обработчик события как метод какого_либо другого объек_ та. Для того чтобы это сделать, необходимо явное указание, например, такое:
button.onclick = function() { o.mymethod(); }
412 Глава 17. События и обработка событий
