Как связать событие с объектом javascript.
Допустим, есть событие onclick. Есть несколько кнопок и при нажатию на каждую вызывается некая функция. Хочется, чтобы с кажой кнопкой был связан свой, отдельный, объект javascript и в его контексте (this) вызывалась эта функция. object.push() например. Кнопки генерируются динамически и им, как и объектам, нельзя заранее дать имена (для кнопок неудобно назначать id, для объектов неудобно вносить их в контекст window и ещё более неудобно давать какое-то имя).
Несколько я понимаю обработчик событий будет вызван в контексте window или с this указывающим на DOM объект для которого сейчас обрабатывается событие. A мне хочется мой object вместо того. Понятно, что придётся динамически назначить разные обработчики onclick. Я не понимаю, можно ли сделать onclick=function() { object.push() }, в таком случае object хранится в замыкании. Или onclick интерпретируется через eval (мне это не понятно, прошу пояснить). Или назначить DOM-объектам разные id и хранить список id и соответствующих им моих object. Или ещё как-то, но я не представляю как. Или, если через addEventListener, то можно внутрь объекта event, тоже динамически создаваемого, засунуть ссылку на мой object, а собственно event поместить внутрь object или как-то так? А garbage collector нормально работатаь будет потом? |
Отвечу сам: в addEventListener можно передать объект, внутри которого нужна функция handleEvent, а остальное что угодно может быть -- раз. Собственно handleEvent и что там ещё нужно можно засунуть в прототип (метакласс) объекта кнопки, например.
|
Часовой пояс GMT +3, время: 14:24. |