为什么js对象在expressJS路由中丢失属性

为什么js对象在expressJS路由中丢失属性,express,Express,我试图在ExpressJS中使用一个“已配置对象”作为控制器,以便可以重用大量代码 取自express配置: var ctrl = new CRUDServiceAdapter(serviceConfig); // list // this works: ctrl.load() app.get(serviceURL, ctrl.load); 另外,这是对象定义的一部分: function CRUDServiceAdapter(serviceConfig){ this.config = s

我试图在ExpressJS中使用一个“已配置对象”作为控制器,以便可以重用大量代码

取自express配置:

var ctrl = new CRUDServiceAdapter(serviceConfig);
// list
// this works:  ctrl.load()
app.get(serviceURL, ctrl.load);
另外,这是对象定义的一部分:

function CRUDServiceAdapter(serviceConfig){
  this.config = serviceConfig;
  this.logger = logModule.logger("service.controller." + serviceConfig.modelName);
};

CRUDServiceAdapter.prototype.load = function(req, res, next){
  this.logger.debug("Creating an object model for " + this.config.modelName);
  res.json({"msg": "Hello World"});
};
当通过expressJS请求调用该方法时,我观察到的是对象属性
this.config
undefined
。但是,如果我直接在对象上调用它,就像在注释
ctrl.load()
中那样,config对象将按预期填充

为什么对象作为路由执行时会丢失其属性值

有办法解决吗

上下文丢失:

您没有将对象
ctrl
作为参数传递,只是传递了一个方法,因此该方法被称为任何常规函数,因此
没有指向ctrl(我猜它是未定义的),因此请尝试更改代码:

app.get(serviceURL, ctrl.load.bind(ctrl));