我一直在探索一些Node.js模块,希望学习在创建具有类似功能的模块时可能错过的东西。然后,我遇到了这个代码Hound:Node.js中的奇怪继承
function Hound() {
//why this?
events.EventEmitter.call(this)
}
//ok, so inheriting the EventEmitter
util.inherits(Hound, events.EventEmitter);
我知道,从Node.js的的util.inherits()
函数创建一个新的父实例为孩子构造as stated in the docs的原型:
构造函数的原型将被设置为由superConstructor创建的新对象。
所以,如果我们的构造是通过util.inherits()
继承EventEmitter
,什么是在构造函数的代码?
看起来像我的坏代码 –
我已经看到这种类型的事情时不时。我总是认为需要在正在构建的实例上显式调用超级构造函数。鉴于从文档摘录,但我不知道是否有必要。也许这是从'继承'工作时不同的遗留下来的旧惯例? – chesles
这不是错误的代码; JavaScript没有其他语言的所有继承细节。这只是node.js期望你如何使用EventEmitter类。 –