javascript - In Express and Node.js, is it possible to extend or override methods of the response object? -
with every middleware, express passes res
, req
objects. these objects extend native ones come http.serverresponse
, http.clientrequest
respectively. i'd know if it's possible override or extend methods of response object.
for example, instead of res.render('home', jsondata);
, i'd extend res
custom method called customrender , use so: res.customrender()
.
i'm not stuck @ particular problem or anything. i'd learn how extend native objects or, case, object come 3rd party modules in node.js
the best idea add custom method prototype of response object:
var express = require("express"); express.response.customrender = function() { // stuff goes here };
and function should accessible every res
object.
you can read source code see how extend native objects. doing prototype chaining:
express/lib/response.js
var res = module.exports = { __proto__: http.serverresponse.prototype };
and object becomes prototype of newely created response object (which comes connect framework):
res.__proto__ = app.response;
(app.response
alias res
defined above). note __proto__
property reference prototype of object.
be warned though. first of __proto__
not part of ecmascript (it might not available in other javascript implementations). secondly: inheritance object.create
(setting __proto__
directly on object monkey patching , bad practice, may break many things). read more here:
https://developer.mozilla.org/en-us/docs/web/javascript/guide/inheritance_and_the_prototype_chain