为什么js对象在expressJS路由中丢失属性
我试图在ExpressJS中使用一个“已配置对象”作为控制器,以便可以重用大量代码 取自express配置:为什么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
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));