text: var Event = require('./event');
  
  var EventTarget = {
    onopen: null,
    onmessage: null,
    onerror: null,
    onclose: null,
  
    addEventListener: function (eventType, listener, useCapture) {
      this._listeners = this._listeners || {};
      var list = this._listeners[eventType] = this._listeners[eventType] || [];
      list.push(listener);
    },
  
    removeEventListener: function (eventType, listener, useCapture) {
      if (!this._listeners || !this._listeners[eventType]) {
        return;
      }
  
      if (!listener) {
        delete this._listeners[eventType];
        return;
      }
      var list = this._listeners[eventType],
        i = list.length;
  
      while (i--) {
        if (listener !== list[i]) {
          continue;
        }
        list.splice(i, 1);
      }
    },
  
    dispatchEvent: function (event) {
      event.target = event.currentTarget = this;
      event.eventPhase = Event.AT_TARGET;
  
      if (this['on' + event.type]) {
        this['on' + event.type](event);
      }
  
      if (!this._listeners || !this._listeners[event.type]) {
        return;
      }
  
      this._listeners[event.type].forEach(function (listener) {
        listener(event);
      }, this);
    }
  };
  
  module.exports = EventTarget;
  
  