adlayer-library
Version:
Adlayer javascript core library
80 lines (75 loc) • 1.41 kB
JavaScript
/**
* @module events
*/
var events = {};
/**
* Implementation minimized of node Event Emitter
*
* @class EventEmitter
* @constructor
*/
var EventEmitter = function(){
/**
* Storage of events
*
* @attribute listeners
* @type object
* @private
*/
var listeners = {
load:[],
click:[],
readyStateChange:[]
};
/**
* @method listeners
* @param {String} event Name of event
* @return {Array}
*/
this.listeners = function(event){
return listeners[event];
};
/**
* @method addListener
* @param {String} event Name of event
* @param {Function} fn Eventhandler
* @return {Array}
*/
this.addListener = function(event,fn){
if(!listeners[event]){
listeners[event] = [];
}
listeners[event].push(fn);
return listeners[event];
};
/**
* Shortcut for addListener
*
* @method on
* @param {String} event Name of event
* @param {Function} fn Eventhandler
* @return {Array}
*/
this.on = function(event, fn){
return this.addListener(event,fn);
};
/**
* Trigger the event
*
* @method emit
* @param {String} event Name of event
* @return {Array}
*/
this.emit = function(event){
var eventListeners = listeners[event];
if(eventListeners && (eventListeners.length > 0)){
var i = 0;
for(i; i < eventListeners.length; i++){
eventListeners[i].call();
}
return eventListeners;
}
};
};
events.EventEmitter = EventEmitter;
exports.events = events;