我正在使用node.js和基于express.js的编程.我曾尝试使用util.inherits在
JavaScript中实现继承.我试过的内容如下:
//request.js function Request() { this.target = 'old'; console.log('Request Target: ' + this.target); } Request.prototype.target = undefined; Request.prototype.process = function(callback) { if (this.target === 'new') return true; return false; } module.exports = Request; //create.js function Create() { Create.super_.call(this); this.target = 'new'; } util.inherits(Create,Request); Create.prototype.process = function(callback) { if (Create.super_.prototype.process.call(this,callback)) { return callback({ message: "Target is 'new'" }); } else { return callback({ message: "Target is not 'new'" }); } } module.exports = Create; //main.js var create = new (require('./create'))(); create.process(function(msg) { console.log(msg); });
我的情况是:
我有Request作为基类和Create作为子类. Request具有在Request构造函数中初始化old的字段目标.
现在,我创建Create类对象,首先调用Request构造函数然后用new初始化目标字段.当我调用Create的进程函数时,我希望得到目标的消息是’new’但它返回另一个!
我为此寻找了类似的线程,但所有这些都是我尝试过的!任何人都可以解释什么是错的吗?
提前致谢 :)
解决方法
util.inherits真的很尴尬超级_…无论如何,这应该工作:
Create.super_.prototype.process.call(this,callback);
但是真的,
var super_ = Request.prototype;
然后语法变得几乎方便:
super_.process.call(this,callback);