expressjs修改/添加模块中的对象属性

我明确创build这个模块:

module.exports = { myobj : {}, myfun : function(app) { app.all('/',function (req, res, next) { this.myobj.foo = 'bar'; } } } 

但它不起作用,我收到以下错误: 无法设置未定义的属性'foo'

但是,如果我这样做,这很好,为什么?

 module.exports = { myobj : '', myfun : function(app) { app.all('/',function (req, res, next) { this.myobj = 'bar'; } } } 

我不明白为什么我不能添加属性到我的对象(第一种情况),但我可以修改我的var myobj(第二种情况)。

怎么了 ?

谢谢 !

试试这个代码:

 module.exports = { myobj : {}, myfun : function(app) { var that = this; app.all('/',function (req, res, next) { that.myobj.foo = 'bar'; } } } 

在第一种情况下: this引用callback函数: function(req, res, next){}不是你要导出的对象,因为这个myobj是未定义的,并且在尝试访问未定义对象的foo属性时收到错误。

在第二种情况下:你初始化function(req, res, next) {}新属性myobj function(req, res, next) {}callback并且没关系,你可以这样做,但是如果你调用myfun然后检查myobj会看到它仍然是空string,你修改callback函数属性不导出对象。