Browse Source

events: remove type check for event type

Strict checking for typeof types broke backwards compatibility for other
libraries. This reverts those checks.

The subclass test has been changed to ensure all operations can be
performed on the inherited EE before instantiation. Including the
ability to set event names with numbers.
v0.9.12-release
Trevor Norris 12 years ago
parent
commit
04688614f7
  1. 12
      lib/events.js
  2. 7
      test/simple/test-event-emitter-subclass.js

12
lib/events.js

@ -125,8 +125,6 @@ EventEmitter.prototype.emit = function(type) {
EventEmitter.prototype.addListener = function(type, listener) {
var m;
if (typeof type !== 'string')
throw TypeError('type must be a string');
if (typeof listener !== 'function')
throw TypeError('listener must be a function');
@ -168,8 +166,6 @@ EventEmitter.prototype.addListener = function(type, listener) {
EventEmitter.prototype.on = EventEmitter.prototype.addListener;
EventEmitter.prototype.once = function(type, listener) {
if (typeof type !== 'string')
throw TypeError('type must be a string');
if (typeof listener !== 'function')
throw TypeError('listener must be a function');
@ -188,8 +184,6 @@ EventEmitter.prototype.once = function(type, listener) {
EventEmitter.prototype.removeListener = function(type, listener) {
var list, position, length, i;
if (typeof type !== 'string')
throw TypeError('type must be a string');
if (typeof listener !== 'function')
throw TypeError('listener must be a function');
@ -235,9 +229,6 @@ EventEmitter.prototype.removeListener = function(type, listener) {
EventEmitter.prototype.removeAllListeners = function(type) {
var key, listeners;
if (arguments.length > 0 && typeof type !== 'string')
throw TypeError('type must not be set or must be a string');
if (!this._events)
return this;
@ -276,9 +267,6 @@ EventEmitter.prototype.removeAllListeners = function(type) {
};
EventEmitter.prototype.listeners = function(type) {
if (typeof type !== 'string')
throw TypeError('event type must be a string');
if (!this._events || !this._events[type])
return [];
if (typeof this._events[type] === 'function')

7
test/simple/test-event-emitter-subclass.js

@ -27,9 +27,9 @@ var util = require('util');
util.inherits(MyEE, EventEmitter);
function MyEE(cb) {
this.emit('bar');
this.on('foo', cb);
process.nextTick(this.emit.bind(this, 'foo'));
this.once(1, cb);
this.emit(1);
this.removeAllListeners();
EventEmitter.call(this);
}
@ -50,5 +50,6 @@ assert.throws(function() {
process.on('exit', function() {
assert(called);
assert.deepEqual(myee._events, {});
console.log('ok');
});

Loading…
Cancel
Save