The best idea would be to add a custom method to the prototype of the response object:
var express = require("express");
express.response.customRender = function() {
// your stuff goes here
};
And this function should be accessible by every res
object.
You can read the source code to see how they extend native objects. Basically they are doing prototype chaining:
express/lib/response.js
var res = module.exports = {
__proto__: http.ServerResponse.prototype
};
And this object becomes a prototype of newely created response object (which comes from connect framework):
res.__proto__ = app.response;
(app.response
is just an alias to res
defined above). Note that __proto__
property is a reference to the prototype of an object.
Be warned though. First of all __proto__
is not a part of EcmaScript (it might not be available in other JavaScript implementations). Secondly: normally you would do inheritance with Object.create
(setting __proto__
directly on an object is a monkey patching and it is generally a bad practice, it may break many things). Read more about that here:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…