Ответ 1
Лучшей идеей было бы добавить пользовательский метод к прототипу объекта ответа:
var express = require("express");
express.response.customRender = function() {
// your stuff goes here
};
И эта функция должна быть доступна каждому объекту res
.
Вы можете прочитать исходный код, чтобы узнать, как они расширяют собственные объекты. В основном они выполняют цепочку прототипов:
выразить /Library/response.js
var res = module.exports = {
__proto__: http.ServerResponse.prototype
};
И этот объект становится прототипом нового созданного объекта ответа (который исходит из рамки соединения):
res.__proto__ = app.response;
(app.response
- это просто псевдоним res
, определенный выше). Обратите внимание, что свойство __proto__
является ссылкой на прототип объекта.
Будьте осторожны. Прежде всего __proto__
не является частью EcmaScript (он может быть недоступен в других реализациях JavaScript). Во-вторых: обычно вы наследовали бы с помощью Object.create
(установка __proto__
непосредственно на объект - это патч обезьяны, и это, как правило, плохая практика, это может нарушить многие вещи). Подробнее об этом читайте здесь:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain