diff --git a/lib/events.js b/lib/events.js index f854bdec94f..996f4f0b172 100644 --- a/lib/events.js +++ b/lib/events.js @@ -49,7 +49,10 @@ EventEmitter.init = function() { this.domain = domain.active; } } - this._events = this._events || {}; + + if (!this._events || this._events === Object.getPrototypeOf(this)._events) + this._events = {}; + this._maxListeners = this._maxListeners || undefined; }; diff --git a/test/simple/test-event-emitter-subclass.js b/test/simple/test-event-emitter-subclass.js index 8a2e9c15644..60b4bf387d6 100644 --- a/test/simple/test-event-emitter-subclass.js +++ b/test/simple/test-event-emitter-subclass.js @@ -53,3 +53,17 @@ process.on('exit', function() { assert.deepEqual(myee._events, {}); console.log('ok'); }); + + +function MyEE2() { + EventEmitter.call(this); +} + +MyEE2.prototype = new EventEmitter(); + +var ee1 = new MyEE2(); +var ee2 = new MyEE2(); + +ee1.on('x', function () {}); + +assert.equal(EventEmitter.listenerCount(ee2, 'x'), 0);