2323
2424var domain ;
2525
26- // This constructor is used to store event handlers. Instantiating this is
27- // faster than explicitly calling `Object.create(null)` to get a "clean" empty
28- // object (tested with v8 v4.9).
29- function EventHandlers ( ) { }
30- EventHandlers . prototype = Object . create ( null ) ;
31-
3226function EventEmitter ( ) {
3327 EventEmitter . init . call ( this ) ;
3428}
@@ -71,7 +65,7 @@ EventEmitter.init = function() {
7165 }
7266
7367 if ( ! this . _events || this . _events === Object . getPrototypeOf ( this ) . _events ) {
74- this . _events = new EventHandlers ( ) ;
68+ this . _events = Object . create ( null ) ;
7569 this . _eventsCount = 0 ;
7670 }
7771
@@ -241,7 +235,7 @@ function _addListener(target, type, listener, prepend) {
241235
242236 events = target . _events ;
243237 if ( ! events ) {
244- events = target . _events = new EventHandlers ( ) ;
238+ events = target . _events = Object . create ( null ) ;
245239 target . _eventsCount = 0 ;
246240 } else {
247241 // To avoid recursion in the case that type === "newListener"! Before
@@ -356,7 +350,7 @@ EventEmitter.prototype.removeListener =
356350
357351 if ( list === listener || list . listener === listener ) {
358352 if ( -- this . _eventsCount === 0 )
359- this . _events = new EventHandlers ( ) ;
353+ this . _events = Object . create ( null ) ;
360354 else {
361355 delete events [ type ] ;
362356 if ( events . removeListener )
@@ -379,7 +373,7 @@ EventEmitter.prototype.removeListener =
379373 if ( list . length === 1 ) {
380374 list [ 0 ] = undefined ;
381375 if ( -- this . _eventsCount === 0 ) {
382- this . _events = new EventHandlers ( ) ;
376+ this . _events = Object . create ( null ) ;
383377 return this ;
384378 } else {
385379 delete events [ type ] ;
@@ -408,11 +402,11 @@ EventEmitter.prototype.removeAllListeners =
408402 // not listening for removeListener, no need to emit
409403 if ( ! events . removeListener ) {
410404 if ( arguments . length === 0 ) {
411- this . _events = new EventHandlers ( ) ;
405+ this . _events = Object . create ( null ) ;
412406 this . _eventsCount = 0 ;
413407 } else if ( events [ type ] ) {
414408 if ( -- this . _eventsCount === 0 )
415- this . _events = new EventHandlers ( ) ;
409+ this . _events = Object . create ( null ) ;
416410 else
417411 delete events [ type ] ;
418412 }
@@ -428,7 +422,7 @@ EventEmitter.prototype.removeAllListeners =
428422 this . removeAllListeners ( key ) ;
429423 }
430424 this . removeAllListeners ( 'removeListener' ) ;
431- this . _events = new EventHandlers ( ) ;
425+ this . _events = Object . create ( null ) ;
432426 this . _eventsCount = 0 ;
433427 return this ;
434428 }
0 commit comments