如何扩展node.js请求对象并向其添加自定义方法和属性?我需要能够this
从节点的请求进行访问,因为我将需要url等。
传递给http.createServer
回调的请求对象是一个http.IncomingMessage
对象。要增加请求对象,您可以向添加方法http.IncomingMessage.prototype
。
var http = require('http');
http.IncomingMessage.prototype.userAgent = function () {
return this.headers['user-agent'];
}
要添加访问器属性:
Object.defineProperty(http.IncomingMessage.prototype, 'userAgent', {
get: function () {
return this.headers['user-agent'];
}
}
如果现有对象的构造方法中定义了其方法,则可以使用委托:
function AugmentedRequest() {
this.userAgent = function () {}
}
AugmentedRequest.call(request); //request now has a userAgent method
不涉及增加request
对象的另一种方法是使用合成。
var extendedRequest = {
get userAgent() {
this.request.headers['user-agent'];
}
}
createServerCallback(function (req, res) {
var request = Object.create(extendedRequest);
request.request = req;
});
此技术在koa中大量使用以包装Node对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句