gpt4 book ai didi

javascript - es6 类方法无法到达此实例

转载 作者:行者123 更新时间:2023-11-30 14:24:13 25 4
gpt4 key购买 nike

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

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

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

因此在调用 POST 方法后它调用了 setupEmail 方法但它崩溃并显示消息:

TypeError: Cannot read property 'availableEmailTypes' of undefined

类的代码:

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 以及它是如何根据调用时上下文动态绑定(bind)的。当您调用 Emails.setupEmail 时,其中的 this 将不是您导出的 Emails 实例。使用箭头函数定义您的方法 bind(Emails) 当您调用它时。

关于javascript - es6 类方法无法到达此实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52204602/

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