Javascript 为什么显式调用nodejs函数参数时表现不同?
我正在重构我的nodejs应用程序,并试图使代码看起来更干净,然后在直接调用函数时遇到了这个问题 这项工作:Javascript 为什么显式调用nodejs函数参数时表现不同?,javascript,node.js,express,promise,es6-promise,Javascript,Node.js,Express,Promise,Es6 Promise,我正在重构我的nodejs应用程序,并试图使代码看起来更干净,然后在直接调用函数时遇到了这个问题 这项工作: router.route('/').get(({ query }, res, next) => { ItemsLogic.getItems(query) .then((items) => res.json(items)) .catch(next) }) 但这带来了错误: router.route('/').get(({ query }, res, next) =&g
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'。它位于express response的
json()
函数中,与该方法中的this
对象有关,由于某些原因,该对象未定义。函数中this
的值取决于调用方式
给定res.json()代码>:此
是res
给定var foo=res.json;foo()代码>:此
不是res
json
函数关心this
的值。传递res.json
就是获取json
(函数)的值,并将其与res
断开连接,就像上面的第二个示例一样。函数中的此
的值取决于调用方式
给定res.json()代码>:此
是res
给定var foo=res.json;foo()代码>:此
不是res
json
函数关心this
的值。传递res.json
就是获取json
(函数)的值,并将其与res
断开,就像上面的第二个例子一样。@abhishekkannojia-你不能传递“语句”(除非你把它们放在字符串中进行eval
ed)。res.json
的值是一个函数。@Quentin是的,你说得对。没有意识到res.json
是一个函数。我想如果你没有正确地阅读代码,就会发生这种情况。感谢您的澄清。要使这项工作顺利进行,只需传递:。然后(res.json.bind(res))@binariedMe您就可以将其作为答案了。这才是真正有效的me@binariedMe你认为什么更优雅?(items)=>res.json(items)或res.json.bind(res)@abhishekkannojia-你不能传递“语句”(除非你把它们放在字符串中进行eval
ed)。res.json
的值是一个函数。@Quentin是的,你说得对。没有意识到res.json
是一个函数。我想如果你没有正确地阅读代码,就会发生这种情况。感谢您的澄清。要使这项工作顺利进行,只需传递:。然后(res.json.bind(res))@binariedMe您就可以将其作为答案了。这才是真正有效的me@binariedMe你认为什么更优雅?(items)=>res.json(items)或res.json.bind(res)