Javascriptinheritance使用节点

我想在我的子类中使用父类的方法。
在传统的面向对象中,只需要扩展你的子类就可以利用你父母的function,这是否可以使用原型?

这是我的文件结构:

Parent.js

var Parent = function(){ this.add = function(num) { return num + 1; }; }; module.exports = Parent; 

Child.js

 var Parent = require("./parent.js"), util = require("util"); var Child = function() { this.sum = function(num) { // I want to be able to use Parent.add() without instantiating inside the class // like this: console.log(add(num)); }; }; util.inherits(Child, Parent); module.exports = Child; 

program.js

 var child = require("./child.js"); var Calculator = new child(); Calculator.sum(1); 

显然, add()在这里没有定义。
我试过使用util.inherits,但我不知道这是正确的做法。

我也想问一下,在JavaScript中这是否是一个好的devise模式,考虑到我想从父类inheritance多个子类?

你的代码有两个问题:

首先,如@Pointy的评论所述,Child.js中的add方法应该由此限定this. 。 这是因为使用add会将其parsing到根作用域(浏览器中的window )。

其次,通过使用this.add = function(...){...} ,您可以独立地add Parentadd方法绑定到每个特定实例。 将它绑定到Parent原型,你会得到你想要的。

 var Parent = function() {} Parent.prototype.add = function(num) { return num + 1; } 

函数Parent.prototype.add将被推断为Parent及其派生对象的所有实例。