我在express上创建了这个模块:
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
引用回调函数:function(req, res, next){}
而不是您要导出的对象,因为这个 myobj
未定义,并且您在尝试访问 undefined object 的 foo
属性时收到错误。
第二种情况:您初始化 function(req, res, next) {}
回调的新属性 myobj
,没问题,您可以这样做,但是如果您调用 myfun
然后检查 myobj
会发现它仍然是空字符串,这是因为您修改了回调函数属性而不是导出对象。
关于node.js - expressjs 在模块中修改/添加对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37574113/