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);