| "use strict";
|
| module.exports = EventEmitter;
|
|
|
| |
| |
| |
| |
| |
|
|
| function EventEmitter() {
|
|
|
| |
| |
| |
| |
|
|
| this._listeners = {};
|
| }
|
|
|
| |
| |
| |
| |
| |
| |
|
|
| EventEmitter.prototype.on = function on(evt, fn, ctx) {
|
| (this._listeners[evt] || (this._listeners[evt] = [])).push({
|
| fn : fn,
|
| ctx : ctx || this
|
| });
|
| return this;
|
| };
|
|
|
| |
| |
| |
| |
| |
|
|
| EventEmitter.prototype.off = function off(evt, fn) {
|
| if (evt === undefined)
|
| this._listeners = {};
|
| else {
|
| if (fn === undefined)
|
| this._listeners[evt] = [];
|
| else {
|
| var listeners = this._listeners[evt];
|
| for (var i = 0; i < listeners.length;)
|
| if (listeners[i].fn === fn)
|
| listeners.splice(i, 1);
|
| else
|
| ++i;
|
| }
|
| }
|
| return this;
|
| };
|
|
|
| |
| |
| |
| |
| |
|
|
| EventEmitter.prototype.emit = function emit(evt) {
|
| var listeners = this._listeners[evt];
|
| if (listeners) {
|
| var args = [],
|
| i = 1;
|
| for (; i < arguments.length;)
|
| args.push(arguments[i++]);
|
| for (i = 0; i < listeners.length;)
|
| listeners[i].fn.apply(listeners[i++].ctx, args);
|
| }
|
| return this;
|
| };
|
|
|