Я рефакторинг моего приложения 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)
})
ошибка: "Невозможно прочитать свойство" приложение "неопределенного". Его внутри json()
функция экспресс-ответа и имеет отношение к this
объекту в этом методе, который по какой-то причине не определен.
Значение this
внутри функции зависит от того, как она называется.
С учетом res.json();
: this
res
.
Для var foo = res.json; foo();
var foo = res.json; foo();
: this
не res
.
Функция json
заботится о значении this
. res.json
вы берете значение json
(функция) и отключаете его от res
же, как второй пример выше.
eval
). Значениеres.json
является функцией.res.json
- это функция. Я думаю, это то, что происходит, когда вы не проходите код должным образом. Спасибо за разъяснение.