Анонімний обробник подій
Глобальна функція
Часто мені хочеться видалити обробник подій відразу після того, як сталося це подія. Набагато простіше коли обробник події не анонімний, але визначити його слід замість глобальної функції як:
В даному прикладі видалити слухач подій досить просто, але цей спосіб створення слухача подій має недоліки. Для того щоб обробник кліків мав доступ до змінної повідомлень, ми повинні оголосити змінну в глобальному контексті. А це, з технічної точки зору, не так здорово.
Повернемося до нашого першого JS наприклад, з яким немає проблем. У цьому прикладі слухач подій і є анонімна функція. Для того, щоб видалити обробник подій такого роду, всередині самого обробника нам буде потрібно отримати посилання на цю функцію. Для цього ми будемо використовувати змінну arguments. яка можлива в будь-який функції автоматично. Це містить не тільки аргументи, передані функції, але так само і посилання на саму функцію: arguments.callee. Ми можемо так само використовувати це посилання для видалення анонімного обробника події після того, як він був викликаний.
Видалення анонімного слухача подій
Тут перший приклад коду з однієї додаткової рядком для видалення анонімного слухача подій.
У коді використовується e.type як тип події і e.eventPhase як фаза подій.
Мінлива arguments.callee задоволена корисна в таких випадках.
Дані погано документовані властивості функції є зручними у використанні. Включайте їх в свій арсенал.
Читайте також статті по темі: