Как на самом деле реализуются * пользовательские * события в JavaScript? - PullRequest
2 голосов
/ 14 апреля 2011

Насколько я понимаю, события не являются частью языка EcmaScript, но из спецификации DOM и реализации DOM в различных двигатели. Прочитав о DOM, у меня сложилось впечатление, что события встроены в движки, и у вас не может быть пользовательских. На с другой стороны, фреймворки, такие как jquery, предоставляют функции, которые определяют пользовательские события. Точно так же вы можете иметь пользовательские события на стороне сервера Фреймворки JavaScript, такие как Node.js.

Я пытался провести исследование об этом, и единственный вывод, который я мог сделать придумать, что «пользовательские» события на самом деле абстракции над истинными (встроенными) событиями, которые фреймворки обрабатывают скрытыми части DOM, созданные для этой конкретной цели.

Это правильно? Если нет, то как на самом деле определяются пользовательские Evers? реализовано в JavaScript?

Ответы [ 2 ]

3 голосов
/ 14 апреля 2011

Спецификация событий DOM ( v2 , v3 ) предоставляет средства для создания и отправки событий с помощью таких методов, как createEvent и dispatchEvent. Это вещь DOM, а не JavaScript. (Различные функции JavaScript, связанные с функциями & mdash; их бытие замыкания , первоклассные объекты и т. Д. & Mdash; позволяют действительно легко реализовывать события с помощью шаблона в стиле наблюдателя, но это уже другая тема.)

0 голосов
/ 17 сентября 2011

В этой статье подробно обсуждается проблема и предоставляется довольно солидное решение для построения "абстракций" вокруг существующих событий dom.

...