Node.JS中的inheritance

我正在使用node.js和基于express.js的编程。 我试图使用util.inherits在JavaScript中实现inheritance。 我试过的是如下:

 //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构造函数中初始化old字段target

现在,我创buildCreate类对象,它首先调用Request构造函数,然后用new初始化target字段。 当我调用Create过程函数时,我希望得到target is 'new'消息target is 'new'但是它返回另一个!

我search了类似的线程,但都是我的尝试! 任何人都可以解释什么是错的?

提前致谢 :)

util.inherits有真正尴尬的super_ …无论如何,这应该工作:

  Create.super_.prototype.process.call(this, callback); 

但真的,

  var super_ = Request.prototype; 

然后语法变得几乎方便:

  super_.process.call(this, callback);