События MouseEvent: вешать на каждый объект или делать роутер аля switch (classname)?
Дилемма...., знатоки посоветуйте как правильнее ? проще конечно каждому объекту присваивать через callBack событие. Но тогда их может быть до 100. Страшно ли это для системы ?
||
повесить один слушатель на main и через tagget узнавать (или className или id)=> выполняем или метод или функцию.
Ответ на такой вопросы мне тоже интересен. Однако мне кажется, в любом случае 100 — это не то количество, которого надо бояться, если у вас не БК-0010. А вообще повесить callBack, это же по сути добавить объекту ещё одно свойство, коих у него и до этого имеется воз и маленькая тележка.
Николай Чуприк, т. е. Лучше вешать на каждый объект событие? Ну в таком случае это хорошо, более понятно как его обработать. Вопрос в догонку: при уничтожении объекта слушатель событие уничтожается?
Смотрите по ситуации, для однотипных элементов лучше использовать второй вариант, делегирование событий. Главное следите за сложностью логики обработчика, чтобы сами в нем не запутались со временем.
Rerurk, я по сложности поведения смотрю, если, например обработчик занимает два экрана, то понимаю, что делаю что-то не то.
Если считаете, что на какие-то элементы лучше повесить отдельно, попробуйте, посмотрите на сколько это удобно или неудобно.
Rerurk, смотрите в браузерном дебагере. Учитывайте, что кроме этих обработчиков на странице будет же что-то еще. Как таковые обработчики могут нагрузить систему, если очень быстро и часто их вызывать, например безпрерывно кликать.
При нормальном взаимодействии, клик будет скорее всего один или несколько, и видимо никак на производительность это не повлияет. Упрощенно можно представить, что вы просто добавляете свойства объектам, ключом которых является ссылка на функцию или функция.
Когда событие сработает, вызов этой функции попадет в очередь макрозадач. Движок выполнит все синхронные операции перед ней, потом выполнит эту функцию, потом выполнит все операции из очереди микрозадач и перерендерит страницу. Далее исполнит следующий коллбэк или будет ждать пока в очередь попадет следующее событие.
Страница может зависнуть, если функция-обработчик будет что-то очень долго делать, в остальном будет ли виснуть страница или нет зависит не только от обработчиков.