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}
@@ -75,7 +69,7 @@ EventEmitter.init = function() {
7569 }
7670
7771 if ( ! this . _events || this . _events === Object . getPrototypeOf ( this ) . _events ) {
78- this . _events = new EventHandlers ( ) ;
72+ this . _events = Object . create ( null ) ;
7973 this . _eventsCount = 0 ;
8074 }
8175
@@ -245,7 +239,7 @@ function _addListener(target, type, listener, prepend) {
245239
246240 events = target . _events ;
247241 if ( ! events ) {
248- events = target . _events = new EventHandlers ( ) ;
242+ events = target . _events = Object . create ( null ) ;
249243 target . _eventsCount = 0 ;
250244 } else {
251245 // To avoid recursion in the case that type === "newListener"! Before
@@ -360,7 +354,7 @@ EventEmitter.prototype.removeListener =
360354
361355 if ( list === listener || list . listener === listener ) {
362356 if ( -- this . _eventsCount === 0 )
363- this . _events = new EventHandlers ( ) ;
357+ this . _events = Object . create ( null ) ;
364358 else {
365359 delete events [ type ] ;
366360 if ( events . removeListener )
@@ -383,7 +377,7 @@ EventEmitter.prototype.removeListener =
383377 if ( list . length === 1 ) {
384378 list [ 0 ] = undefined ;
385379 if ( -- this . _eventsCount === 0 ) {
386- this . _events = new EventHandlers ( ) ;
380+ this . _events = Object . create ( null ) ;
387381 return this ;
388382 } else {
389383 delete events [ type ] ;
@@ -412,11 +406,11 @@ EventEmitter.prototype.removeAllListeners =
412406 // not listening for removeListener, no need to emit
413407 if ( ! events . removeListener ) {
414408 if ( arguments . length === 0 ) {
415- this . _events = new EventHandlers ( ) ;
409+ this . _events = Object . create ( null ) ;
416410 this . _eventsCount = 0 ;
417411 } else if ( events [ type ] ) {
418412 if ( -- this . _eventsCount === 0 )
419- this . _events = new EventHandlers ( ) ;
413+ this . _events = Object . create ( null ) ;
420414 else
421415 delete events [ type ] ;
422416 }
@@ -432,7 +426,7 @@ EventEmitter.prototype.removeAllListeners =
432426 this . removeAllListeners ( key ) ;
433427 }
434428 this . removeAllListeners ( 'removeListener' ) ;
435- this . _events = new EventHandlers ( ) ;
429+ this . _events = Object . create ( null ) ;
436430 this . _eventsCount = 0 ;
437431 return this ;
438432 }
0 commit comments