Function ConstrA () {
EventEmitter.call(this);
}
util.inherits(ConstrA, EventEmitter);
对比
Function ConstrA() {}
util.inherits(ConstrA, EventEmitter);
EventEmitter.call(this) 是否需要这样做?
Function ConstrA () {
EventEmitter.call(this);
}
util.inherits(ConstrA, EventEmitter);
对比
Function ConstrA() {}
util.inherits(ConstrA, EventEmitter);
EventEmitter.call(this) 是否需要这样做?
EventEmitter.call(this) 是否需要这样做?
显然,是的:
function EventEmitter() {
EventEmitter.init.call(this);
}
…
EventEmitter.init = function() {
this.domain = null;
if (EventEmitter.usingDomains) {
// if there is an active domain, then attach to it.
domain = domain || require('domain');
if (domain.active && !(this instanceof domain.Domain)) {
this.domain = domain.active;
}
}
this._events = this._events || {};
this._maxListeners = this._maxListeners || undefined;
};
由于所有使用的方法都会._events
检查它的存在,因此如果您确实省略了调用,我不会期望太多中断,但我不确定这在未来是否成立。
有足够多的其他构造函数不允许被省略,因此在构造实例时总是简单地调用构造函数是一种很好的做法。
util.inherits
获取整个父原型,但您丢失了构造函数。因此,继承构造函数通常会以当前this
作为上下文调用父构造函数,就像您在第一个示例中看到的那样。