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.
This commit is contained in:
Trevor Norris 2013-03-04 11:33:03 -08:00
parent 890dc2eeb1
commit 04688614f7
2 changed files with 4 additions and 15 deletions

View File

@ -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')

View File

@ -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');
});