gpt4 book ai didi

javascript - 为什么显式调用时 NodeJS 函数参数的行为不同?

转载 作者:太空宇宙 更新时间:2023-11-04 02:04:17 27 4
gpt4 key购买 nike

我正在重构我的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 有关该方法中的对象,由于某种原因未定义。

最佳答案

函数内 this 的值取决于它的调用方式。

给定 res.json();:thisres

给定 var foo = res.json; foo();:this不是res

json 函数关心 this 的值。通过传递 res.json,您将获取 json(函数)的值,并将其与 res 断开,就像上面的第二个示例一样。

关于javascript - 为什么显式调用时 NodeJS 函数参数的行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44886579/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com