javascript – 在Express和Node.js中,是否可以扩展或覆盖响应对象的方法?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在Express和Node.js中,是否可以扩展或覆盖响应对象的方法?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1242字,纯文字阅读大概需要2分钟。
内容图文
对于每个中间件,Express都会传递res和req对象.这些对象分别扩展了来自http.ServerResponse和http.ClientRequest的本机对象.我想知道是否可以覆盖或扩展响应对象的方法.
例如,我不想使用res.render(‘home’,jsonData);而是使用名为customRender的自定义方法扩展res,并使用它:res.customRender().
我没有陷入某个特定问题或其他任何问题.我只是想学习如何扩展本机对象,或者像本例一样,来自Node.js中第三方模块的对象
解决方法:
最好的想法是将自定义方法添加到响应对象的原型:
var express = require("express");
express.response.customRender = function() {
// your stuff goes here
};
并且每个res对象都应该可以访问此函数.
您可以阅读源代码以了解它们如何扩展本机对象.基本上他们正在做原型链接:
快递/ lib目录/ response.js
var res = module.exports = {
__proto__: http.ServerResponse.prototype
};
这个对象成为newely创建的响应对象(来自连接框架)的原型:
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
内容总结
以上是互联网集市为您收集整理的javascript – 在Express和Node.js中,是否可以扩展或覆盖响应对象的方法?全部内容,希望文章能够帮你解决javascript – 在Express和Node.js中,是否可以扩展或覆盖响应对象的方法?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。