Грамотное добавление событий
Добрый день! Хочу написать свою библиотечку. Главный класс в ней - Event. В нем выполняется куча тяжелых действий. Хочу сделать так, что программист, пользуясь этой библиотекой, мог добавлять свои мелкие события userEventFirst, userEventTwo и пр., в специально отведенном месте. Чтобы он не искал это место, хочу предоставить ему "интерфейс".
Вот мой класс: addEvent = function () { this.userEventFirst = function () {}; this.userEventTwo = function () {}; this.attachEvent = function (event, handler) { switch ( event ) { case 'eventFirst': this.userEventFirst = handler; break; case 'eventTwo': this.userEventTwo = handler; break; break; } }; this.working = function () { this.userEventFirst(); //... hard work console.log('working'); this.userEventTwo(); } }; И вот программист берет мой класс, и дописывает действия: addEvent1 = new addEvent(); addEvent1.attachEvent('eventFirst', function() { console.log('click eventFirst'); // что угодно еще }); addEvent1.attachEvent('eventTwo', function() { console.log('click eventTwo'); // что угодно еще }); addEvent1.working(); Все работает. Только насколько грамотно это сделано? может теряется производительность и т.п. Таких событий может быть десяток, они могут вызываться в цикле или в таймере. Причем программист может задавать не все события, а только то, что ему нужно. Смущает, что не заданные действия крутятся вхолостую: this.userEventFirst = function () {}; |
Если не хватает знаний, то стоит ли вообще писать такую "библиотеку"?
Почему не вешать кастомные события на document и на нем же их вызывать? Зачем вообще реализовывать обработчики событий за программиста Васю? Вам стоит посмотреть на EventEmitter. |
Часовой пояс GMT +3, время: 18:52. |