Грамотное добавление событий в JavaScript


Я хочу написать свою собственную библиотеку. Основной класс в это 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;
        }

    };

    this.working = function () {

        this.userEventFirst();  

        //... hard work
        var div = document.getElementById('text');
        div.innerHTML += 'class working<br>';

        this.userEventTwo();
    }   

};

И вот программист берет мой класс, и добавляет действия:

// programmer use my class:

addEvent1 = new addEvent();

addEvent1.attachEvent('eventFirst', function() {

        var div = document.getElementById('text');
        div.innerHTML += 'user event First<br>' ; 

});

addEvent1.attachEvent('eventTwo', function() {

        var div = document.getElementById('text');
        div.innerHTML += 'user event Two<br>' ;

});

addEvent1.working();

Все это работает. Только, как грамотно это делается? Производительность может быть потеряно. Таких событий может быть десяток, их можно назвать в цикл или в таймер. И программист может задать не все события, а только то, что ему нужно. Вы видите, я программировал только на Паскале.

jsFiddle



Комментарии