我想在我的子类中使用我的父类的类方法。
在经典的 OOP 中,您只需扩展子类即可使用父类的功能,这可以使用原型(prototype)吗?
这是我的文件结构:
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;
程序.js
var child = require("./child.js");
var Calculator = new child();
Calculator.sum(1);
显然,add()
在这里未定义。
我尝试过使用util.inherits但我不确定这是正确的方法。
考虑到我希望有多个子类继承自父类,我还想问这在 JavaScript 中是否是一个很好的设计模式?
最佳答案
您的代码有两个问题:
首先,正如 @Pointy 的评论中提到的,Child.js 中的 add
方法应该使用 this.
进行限定。这是因为使用 add
会将其解析为根范围(浏览器中的 window
)。
其次,您可以使用 this.add = function(...){ 将
。将其绑定(bind)到 Parent
中的 add
方法独立绑定(bind)到每个特定实例。 ..}Parent
原型(prototype),您就会得到您想要的。
var Parent = function() {}
Parent.prototype.add = function(num) { return num + 1; }
函数 Parent.prototype.add
将被推断为 Parent
及其派生对象的所有实例。
关于使用 Node 的Javascript继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27583450/