使用自定义方法来扩展ExpressJS / Response对象的正确方法是什么?

现在我通过中间件来扩展请求对象:

function(req, res, next) { res.customMethod = function() { } next(); } 

但是由于res.prototype命名空间的污染,我认为这是不正确的。 有没有人知道更好的方法,或者expressjs4已经有任何方法呢?

你的方法几乎是完美的,但正如你所说,最好避免污染res命名空间:为了达到你的目标,你可以使用为此devise的res.locals属性。 接下来是我附加到响应对象的代码片段,是我的应用程序的翻译器。

 app.use(function(req, res, next){ function Translator (lang) { this.lang = lang ? lang : 'it'; this.translate = function (sentence) { var d = dictionaries.get; var translation = d[this.lang] ? d[this.lang][sentence] : d['it'][sentence]; return translation ? translation : sentence; }; this.setLang = function (l) { this.lang = l; }; }; res.locals.translator = new Translator(); next(); });