ES6 类方法无法访问此实例



所以我创建了一个类,不知道为什么我不能在一个方法中访问this实例。

所以在我的路由器中,我像这样调用方法

import Emails from '../controllers/emails'
import router from 'express'
....
route.post('/', Emails.setupEmail)

因此POST调用该方法后,它会调用setupEmail方法,但崩溃并显示消息:

类型错误: 无法读取未定义的属性"可用电子邮件类型">

和类的代码:

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()

所以主要问题是为什么我无法访问在构造函数上创建的数组?

因为this以及它如何基于调用时上下文动态绑定。当您调用Emails.setupEmail时,其中this不会是您导出的Emails实例。使用箭头函数定义方法,或者在调用方法时bind(Emails)

最新更新