Добрый день! Хочу написать свою библиотечку. Главный класс в ней - 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 () {};