lib/delegate.js
function Delegate(root) {

  /**
   * Maintain a map of listener
   * lists, keyed by event name.
   *
   * @type Object
   */
  this.listenerMap = [{}, {}];
  if (root) {
    this.root(root);
  }

  /** @type function() */
  this.handle = Delegate.prototype.handle.bind(this);
}
function Delegate(root) {

  /**
   * Maintain a map of listener
   * lists, keyed by event name.
   *
   * @type Object
   */
  this.listenerMap = [{}, {}];
  if (root) {
    this.root(root);
  }

  /** @type function() */
  this.handle = Delegate.prototype.handle.bind(this);
}
function Delegate ( root ) { /**
   * Maintain a map of listener
   * lists, keyed by event name.
   *
   * @type Object
   */ this . listenerMap = [ { } , { } ] ; if ( root ) { this . root ( root ) ; } /** @type function() */ this . handle = Delegate . prototype . handle . bind ( this ) ; }
DOM event delegator

The delegator will listen
for events that bubble up
to the root node.

@constructor
@param {Node|string} [root] The root node or a selector string matching the root node
DOM event delegator