123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- ( function( global, factory ) {
-
-
- if ( typeof define == 'function' && define.amd ) {
-
- define( factory );
- } else if ( typeof module == 'object' && module.exports ) {
-
- module.exports = factory();
- } else {
-
- global.EvEmitter = factory();
- }
- }( typeof window != 'undefined' ? window : this, function() {
- "use strict";
- function EvEmitter() {}
- var proto = EvEmitter.prototype;
- proto.on = function( eventName, listener ) {
- if ( !eventName || !listener ) {
- return;
- }
-
- var events = this._events = this._events || {};
-
- var listeners = events[ eventName ] = events[ eventName ] || [];
-
- if ( listeners.indexOf( listener ) == -1 ) {
- listeners.push( listener );
- }
- return this;
- };
- proto.once = function( eventName, listener ) {
- if ( !eventName || !listener ) {
- return;
- }
-
- this.on( eventName, listener );
-
-
- var onceEvents = this._onceEvents = this._onceEvents || {};
-
- var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};
-
- onceListeners[ listener ] = true;
- return this;
- };
- proto.off = function( eventName, listener ) {
- var listeners = this._events && this._events[ eventName ];
- if ( !listeners || !listeners.length ) {
- return;
- }
- var index = listeners.indexOf( listener );
- if ( index != -1 ) {
- listeners.splice( index, 1 );
- }
- return this;
- };
- proto.emitEvent = function( eventName, args ) {
- var listeners = this._events && this._events[ eventName ];
- if ( !listeners || !listeners.length ) {
- return;
- }
-
- listeners = listeners.slice(0);
- args = args || [];
-
- var onceListeners = this._onceEvents && this._onceEvents[ eventName ];
- for ( var i=0; i < listeners.length; i++ ) {
- var listener = listeners[i]
- var isOnce = onceListeners && onceListeners[ listener ];
- if ( isOnce ) {
-
-
- this.off( eventName, listener );
-
- delete onceListeners[ listener ];
- }
-
- listener.apply( this, args );
- }
- return this;
- };
- proto.allOff = function() {
- delete this._events;
- delete this._onceEvents;
- };
- return EvEmitter;
- }));
|