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:
parent
890dc2eeb1
commit
04688614f7
@ -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')
|
||||
|
@ -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…
x
Reference in New Issue
Block a user