2012-04-20 13 views
0

我想用expressjs來擴充request對象的原型,但是不清楚這個請求是在哪裏定義的?我認爲它是http.ServerRequest,但是我也找不到那個定義。在express/node配置中更新ServerRequest的原型

怎樣做以下的正確方法...

http.ServerRequest.prototype.redirect = function(path) { } 
+0

http是node.js中的核心庫。你最希望實現你以後的目標可能是使用門面而不是繼承 – ControlAltDel 2012-04-20 20:22:00

+0

這就是我所害怕的。我試圖避免這種情況,因爲它要求所有開發人員知道新函數的名稱。 – Greg 2012-04-20 20:24:12

回答

0

表達自己增加了它的實用方法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警告他的答案。

0

Connect framework和他middleware libs。每個中間件都在創建之後擴展請求和響應對象。更改核心對象的原型不是最好的方式,因爲這會導致其他模塊中的不可預知的行爲。