github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/themes/wind/static/libs/sockjs-client-1.1.0/lib/event/emitter.js (about)

     1  'use strict';
     2  
     3  var inherits = require('inherits')
     4    , EventTarget = require('./eventtarget')
     5    ;
     6  
     7  function EventEmitter() {
     8    EventTarget.call(this);
     9  }
    10  
    11  inherits(EventEmitter, EventTarget);
    12  
    13  EventEmitter.prototype.removeAllListeners = function(type) {
    14    if (type) {
    15      delete this._listeners[type];
    16    } else {
    17      this._listeners = {};
    18    }
    19  };
    20  
    21  EventEmitter.prototype.once = function(type, listener) {
    22    var self = this
    23      , fired = false;
    24  
    25    function g() {
    26      self.removeListener(type, g);
    27  
    28      if (!fired) {
    29        fired = true;
    30        listener.apply(this, arguments);
    31      }
    32    }
    33  
    34    this.on(type, g);
    35  };
    36  
    37  EventEmitter.prototype.emit = function() {
    38    var type = arguments[0];
    39    var listeners = this._listeners[type];
    40    if (!listeners) {
    41      return;
    42    }
    43    // equivalent of Array.prototype.slice.call(arguments, 1);
    44    var l = arguments.length;
    45    var args = new Array(l - 1);
    46    for (var ai = 1; ai < l; ai++) {
    47      args[ai - 1] = arguments[ai];
    48    }
    49    for (var i = 0; i < listeners.length; i++) {
    50      listeners[i].apply(this, args);
    51    }
    52  };
    53  
    54  EventEmitter.prototype.on = EventEmitter.prototype.addListener = EventTarget.prototype.addEventListener;
    55  EventEmitter.prototype.removeListener = EventTarget.prototype.removeEventListener;
    56  
    57  module.exports.EventEmitter = EventEmitter;