util.inherits Node中的自定义子类?

我正在尝试为节点中的一些自定义类实现非常简单的inheritance。 我正在做这样的事情:

function MyClass() { this.myFunction = function(){ //do something } } function MySubclass(){ this.myOtherFunction = function(){ //do something else } } util.inherits(MySubclass, MyClass) console.log(MySubclass.super_ === MyClass); // true var x = new MySubclass() console.log(x instanceof MyClass); // true x.myFunction() 

如果我运行这个,我得到的错误:

 TypeError: Object #<MySubclass> has no method 'myFunction' 

这个确切的模式非常适合从events.EventEmitterinheritance。 它只是不工作的自定义类,或者有什么我失踪?

util.inherits只设置了原型链。 你缺less的是调用超级构造函数,以便它添加到this东西。 以下是如何做到这一点:

 function MyClass() { this.myFunction = function() { // Do something }; } MyClass.prototype.doFoo = function () { }; function MySubclass() { // This is doing the same as MyClass.apply(this, arguments); MySubclass.super_.apply(this, arguments); this.myOtherFunction = function() { // Do some other thing }; } util.inherits(MySubclass, MyClass); MySubclass.prototype.doBar = function() { }; var x = new MySubclass(); x.myFunction(); x.myOtherFunction(); x.doFoo(); x.doBar(); 

您可能仍然希望将这些方法移至每个原型。