Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как связать событие с объектом javascript. (https://javascript.ru/forum/events/31771-kak-svyazat-sobytie-s-obektom-javascript.html)

fk0 20.09.2012 12:41

Как связать событие с объектом 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 нормально работатаь будет потом?

fk0 20.09.2012 13:14

Отвечу сам: в addEventListener можно передать объект, внутри которого нужна функция handleEvent, а остальное что угодно может быть -- раз. Собственно handleEvent и что там ещё нужно можно засунуть в прототип (метакласс) объекта кнопки, например.


Часовой пояс GMT +3, время: 04:47.