我在 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 未定义”。但是,当我将所有这些放在一个文件(例如 app.js)中时,一切都正常。你能指出我的代码有什么问题或者建议更好的方法吗?
谢谢!
最佳答案
在你的 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());
但无论如何,您需要先 require 并且仅在 apply new
运算符之后。它与operator precedence有关, new
运算符具有非常高的优先级。
关于javascript - Node.js 模块的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31490343/