Node.js继承模块

时间:2015-07-18 10:43:54

标签: javascript node.js inheritance

我在node.js中继承有问题。我遵循stackoverflows现有线程的模式,但我的代码仍然不能正常工作。

让我们从两个项目开始,首先是'base.js':

function Base() {
    this.type = 'empty';
}

Base.prototype.getType = function () {
    return this.type;
}

module.exports = Base;

然后我有我的'second.js'文件,它应该从Base继承

var Base = require('./base.js'), util = require('util');

function Second() {
    Base.apply(this, arguments);
}

util.inherits(Second, Base);


Second.prototype.getData = function () {
    return 12;
}

module.exports = Second;

在我的app.js中,我致电

var second = new require('./second.js');
console.log(second.getType());

那就是抛出错误'getType is undefined'。但是,当我将所有这些放在一个文件中(例如app.js)时,一切正常。你能指出我的代码中有什么问题或建议更好的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

在app.js中,您首先需要构造函数,然后构造新实例:

var Second = require('./second.js');
var second = new Second();

console.log(second.getType());

或者你也可以这样做:

var second = new (require('./second.js'));
console.log(second.getType());

但无论如何,您需要首先要求并且仅在应用new运算符之后。它与operator precedence有关,new运算符具有非常高的优先级。