Ну а дальше вы можете расширять этот каркас всякими деструкторами и евент эмиттерами:
var EventEmitter = Class.extend(function () {
this.constructor = function () {
this._handlersStore = {}
};
this.on = function (type, handler) {
var handlersStore = this._handlersStore;
var handlers = handlersStore[type] || (handlersStore[type] = []);
handlers.push(handler);
};
this.emit = function (type) {
var self = this;
var eventArgs = [].slice.call(arguments, 1);
var handlersStore = this._handlersStore;
var handlers = handlersStore[type] || [];
handlers.forEach(function (handler) {
handler.apply(self, eventArgs);
});
};
});
var q = new EventEmitter();
q.on('click', function () {
alert('on click!');
});
q.emit('click');