我正在尝试扩展快速模块,并添加到他的方法中。 为此,我使用util模块 我的代码:
var expressApplication = require('express');
var util = require('util');
function Application() {
expressApplication.apply(this, arguments);
this.handlers = {};
}
util.inherits(Application, expressApplication);
//add my method
Application.prototype.write = function(data) {
console.log(data)
};
然后我称之为:
var app = new Application();
//check inheritance
console.log(app instanceof expressApplication); // true
console.log(Application.super_ === expressApplication); // true
//and check the work my method
console.log(app.write('test'));
console.log(app.use) /// ---> error!!!
但是当我想调用快递的方法时 - 我无法使用,console.log(app.use)
有错误app.use is not a function
请告诉我有什么问题,在哪里寻找解决问题的方法?或者,相反,我试听表达koa,实践。
谢谢!
答案 0 :(得分:0)
由require('express')
导出的函数只是一个factory function,它自己进行原型混合,因此没有一个对象可以继承。
您有几个选择:
express.application
子类express.application
第一个好处是您不会影响所有Express应用程序实例,这通常是您想要的。写入第三方模块的原型(甚至是内置对象的原型)通常不赞成并且可能导致问题(特别是如果最终用户使用相同的名称附加他们自己的属性)。