我在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)时,一切正常。你能指出我的代码中有什么问题或建议更好的方法吗?
谢谢!
答案 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
运算符具有非常高的优先级。