我想用expressjs來擴充request對象的原型,但是不清楚這個請求是在哪裏定義的?我認爲它是http.ServerRequest,但是我也找不到那個定義。在express/node配置中更新ServerRequest的原型
怎樣做以下的正確方法...
http.ServerRequest.prototype.redirect = function(path) { }
我想用expressjs來擴充request對象的原型,但是不清楚這個請求是在哪裏定義的?我認爲它是http.ServerRequest,但是我也找不到那個定義。在express/node配置中更新ServerRequest的原型
怎樣做以下的正確方法...
http.ServerRequest.prototype.redirect = function(path) { }
表達自己增加了它的實用方法http.IncomingMessage.prototype
,使用這種模式in 2.*:
var http = require('http'),
req = http.IncomingMessage.prototype;
req.foo = function(bar) {
// Do cool stuff
};
而且這種模式in 3.*:
var http = require('http');
var req = exports = module.exports = {
__proto__: http.IncomingMessage.prototype
};
明智的做法是要小心猴子修補不過,因爲瓦迪姆Baryshev警告他的答案。
看Connect framework和他middleware libs。每個中間件都在創建之後擴展請求和響應對象。更改核心對象的原型不是最好的方式,因爲這會導致其他模塊中的不可預知的行爲。
http是node.js中的核心庫。你最希望實現你以後的目標可能是使用門面而不是繼承 – ControlAltDel 2012-04-20 20:22:00
這就是我所害怕的。我試圖避免這種情況,因爲它要求所有開發人員知道新函數的名稱。 – Greg 2012-04-20 20:24:12