最近我关注Node.js In Action, 在第9章中有一个消息模块,以下是该模块中的一个功能, 当res.message被调用时,我对'this'对象是什么感到困惑, 所以我打印出'this'对象的名字
//in lib/messages.js
var express = require('express');
var res = express.response;
console.log(res.constructor.name); //ServerResponse
res.message = function (msg, type){
var sess = this.req.session; //what will be the this object?
console.log(this.constructor.name); //ServerResponse
console.log(this.req.constructor.name); //IncomingMessage
...
}
在app.js中调用消息模块时, 似乎'this'是一个ServerResponse对象,但是我检查了node.js手册,我发现ServerResponse对象没有自己的'req'属性,所以它必须是它的原型属性。
我的问题是,我怎么知道'ServerResponse'有'req'属性所以我可以使用它?
答案 0 :(得分:0)
Express接受ServerResponse
并添加额外数据,这是.req
属性的来源。通常,如果要检查对象是否在node.js中具有属性,您可以这样做:
if (obj.attribute !== undefined) { ... do stuff ... }