【发布时间】:2018-09-06 12:53:45
【问题描述】:
所以我创建了一个类,但不知道为什么我无法在一个方法中访问 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()
所以主要问题是为什么我无法访问在构造函数上创建的数组?
【问题讨论】:
-
我可以强烈建议不要导出类的实例 (
new Emails) 并使用班级名称(Emails)?!以后再谈如何让人们在阅读/维护代码时绊倒......(就此而言,如果你只想拥有一个实例,那么Emails类根本没有意义;只需使用一个对象。) -
@T.J.Crowder 在说什么 + 如果您进行服务器端渲染,并且在某些时候有人决定在运行时更改该值,您最终会混合请求数据。
标签: javascript node.js ecmascript-6 this