Node.js 如何在nodejs中的prototype方法中访问类的this.property

Node.js 如何在nodejs中的prototype方法中访问类的this.property,node.js,Node.js,这就是我要做的。我正在用nodejs express编写一个应用程序,并试图将应用程序的不同部分划分为不同的模块。我在访问中间件函数中的这个变量时遇到一些问题 下面是我的路线模块 "use strict"; function route(params){ var app = params.app; var ApiHelper = require('../library/apiHelper').init(params); //get app.get('/', Api.index);

这就是我要做的。我正在用nodejs express编写一个应用程序,并试图将应用程序的不同部分划分为不同的模块。我在访问中间件函数中的这个变量时遇到一些问题

下面是我的路线模块

"use strict";
function route(params){
  var app = params.app;
  var ApiHelper = require('../library/apiHelper').init(params);
  //get
  app.get('/', Api.index);
  app.get('/check', ApiHelper.validateRequest, Api.check);
}
module.exports = route;
我的助理班

"use strict";
function ApiHelper(params){
  this.params = params;
}
module.exports.init = function (params){
  return new ApiHelper(params);
};
ApiHelper.prototype.validateRequest = function validateRequest(req, res, next){
  console.log(this.params);//this is undefined
};

我无法访问ApiHelper的validateRequest对象中的this.params

仅通过
validateRequest
方法将丢失绑定。您可以像这样重新绑定它:

app.get('/check', ApiHelper.validateRequest.bind(ApiHelper), Api.check);

您好,我实际上是这样工作的。您能推荐我哪一种更好的工作方式吗?我自己会在您的Pastebin代码中使用这种方法:)顺便说一句,您正在为每次调用
validateRequest
安装
express.bodyParser()
;中间件应该只安装一次(在服务器配置期间)。我这样做对吗?使用它的正常方式是对所有路线只声明一次,除非你真的担心你的网站被攻击(就像你链接到的帖子中的人似乎担心的那样)。另外,
bodyParser
仅对
POST
路由有意义,并且您正在
GET
路由上使用它。只需使用
app.use(express.bodyParser())。或者,如果您只想将其传递给
POST
routes:
var-bodyParser=express.bodyParser();app.post('/route',bodyParser,…)