所以我做了一个类,不知道为什么我无法在一个方法内到达this
实例。
所以在我的路由器中,我正在这样调用方法
import Emails from '../controllers/emails'
import router from 'express'
....
route.post('/', Emails.setupEmail)
因此,在调用POST
方法之后,它会调用setupEmail
方法,但是会崩溃并显示以下消息:
TypeError:无法读取未定义的属性“ availableEmailTypes”
和类代码:
class Emails {
constructor() {
this.availableEmailTypes = ['registration', 'forgot-password', 'two-factor']
}
setupEmail(req, res) {
if (!req.body.type || !req.body.type.include(this.availableEmailTypes)) {
return res.status(422).send({ success: false, message: 'Invalid email type' })
}
switch (req.body.type) {
case 'registration':
break
}
}
}
export default new Emails()
所以主要问题是为什么我无法访问在构造函数上创建的数组?
答案 0 :(得分:2)
由于this
以及它如何基于调用时上下文而动态绑定。调用Emails.setupEmail
时,其中的this
不会是您导出的Emails
实例。调用时,可以使用箭头函数定义您的方法或 bind(Emails)
。