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函数属性不导出对象。