appeerjs
Version:
A basic encapsulation of Native WebRTC, this would offer an easy to use and understand API for beginners out there
91 lines (64 loc) • 2.19 kB
JavaScript
/**
* @author mrdoob / http://mrdoob.com/
*/
;
function EventDispatcher() {}
Object.assign(EventDispatcher.prototype, {
addEventListener: function (type, listener) {
if (this._listeners === undefined) this._listeners = {};
var listeners = this._listeners;
if (listeners[type] === undefined) {
listeners[type] = [];
}
if (listeners[type].indexOf(listener) === - 1) {
listeners[type].push(listener);
}
},
hasEventListener: function (type, listener) {
if (this._listeners === undefined) return false;
var listeners = this._listeners;
if (listeners[type] !== undefined && listeners[type].indexOf(listener) !== -1) {
return true;
}
return false;
},
removeEventListener: function (type, listener) {
if (this._listeners === undefined) return;
var listeners = this._listeners;
var listenerArray = listeners[ type ];
if (listenerArray !== undefined) {
var index = listenerArray.indexOf(listener);
if (index !== -1) {
listenerArray.splice(index, 1);
}
}
},
dispatchEvent: function (event) {
if (this._listeners === undefined) return;
var listeners = this._listeners;
var listenerArray = listeners[event.type];
if (listenerArray !== undefined) {
event.target = this;
var i = 0,
array = [],
length = listenerArray.length;
for (i = 0; i < length; i++) {
array[i] = listenerArray[i];
}
for (i = 0; i < length; i++) {
array[i].call(this, event);
}
}
},
on: function (eventName, listener) {
this.addEventListener(eventName, listener);
},
emit: function (eventName, data) {
var event = {
type: eventName,
data: data
};
this.dispatchEvent(event);
}
});
module.exports = EventDispatcher;