since the discussion about a better Function#bind will probably never end, and since a must have dependency would be the ES6 WeakMap which is in any existent shim leak prone due lack of control via ES5+, I have proposed another way to solve the problem. ObjectHandler IDL Like /**  *  interface ObjectHandler implements EventListener {  *      void                handleEvent(in Event evt);  *      void                remitEvent(in Event evt);  *      attribute   Object  events;  *  };  *  *  @link   http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventListener  */ var ObjectHandler = {   handleEvent: function handleEvent(e) {     var       events = this.events,       type = e.type     ;     if (events.hasOwnProperty(type)) {       events[type].call(this, e);     }   },   // it could be called removeEvent too, as you wish   remitEvent: function cancelEvent(e) {     e.currentTarget.removeEventListener(       e.type, this, e.eventPhase === e.CAPTURING_PHASE     );   } }; Above ob...