我正在重构我的nodejs应用程序并尝试使代码看起来更干净,然后我在直接调用函数时遇到了这个问题。
这有效:
router.route('/').get(({ query }, res, next) => {
ItemsLogic.getItems(query)
.then((items) => res.json(items))
.catch(next)
})
但这会引发错误:
router.route('/').get(({ query }, res, next) => {
ItemsLogic.getItems(query)
.then(res.json)
.catch(next)
})
错误是:"无法读取属性' app'未定义"。它在快速响应的json()
函数内部,与该方法中的this
对象有关,由于某种原因未定义。
答案 0 :(得分:0)
函数内this
的值取决于它的调用方式。
鉴于res.json();
:this
为res
。
鉴于var foo = res.json; foo();
:this
不 res
。
json
函数关注this
的值。通过res.json
,您将获取json
(函数)的值,并将其与res
断开,就像上面的第二个示例一样。