javascript - JS 类中的方法不带函数

标签 javascript oop

由于同一页面上的两个表单执行不同的提交,我有一个隐藏表单。然后,隐藏表单保存密码字段,一旦输入密码字段,它将向用户显示一个部分,这部分全部与 PHP 一起使用,并且当单击按钮时。然而,我有一个addEventListener在输入字段上监听用户何时按下“Enter”。在事件监听器中,我声明了按钮的名称,然后 click()提交表格的方法。但我遇到了以下错误:

Uncaught TypeError: this.confirmPassowrd() is not a function?

JS

enterKey()
{
    document.querySelector('#password-confirm').addEventListener('keydown', function (e) {
       if (e.key === 'Enter') {
           this.confirmPassword();
       }
    });
}

confirmPassword()
{
    document.getElementById('confirm-password').click();
}

我不完全确定发生了什么,但是如果我将其作为普通函数放在 html 所在的页面上,并使用 EnterKey() 方法调用它,它就可以正常工作。有什么建议吗?

亲切的问候,

詹姆斯

最佳答案

您将在 keydown 事件监听器回调中丢失类的上下文。

尝试将您传入的function (e)切换为箭头函数:e =>

箭头函数将保留其创建位置的词法this,而函数将接受在以下情况下传递给它的任何this:它被调用。因此,在您的事件监听器函数中,this 不再意味着“我在其中定义的类的实例”。

关于javascript - JS 类中的方法不带函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55304399/

相关文章:

javascript - 从 redux 中访问服务器 Prop ?

javascript - Chrome 中关于 document.styleSheets 的奇怪行为

javascript - 在 catch block 中抛出错误 Q Promise 不拒绝 Promise

java - 如何在 Java 中设计和接口(interface)(OOP 类型),以便我可以使用直接数据库访问或使用 Web 服务?

python - 扩展类不能被pickle

javascript - 如何将光标移动到 contenteditable 实体的末尾

javascript - 如何将 Clipboard.js 库导入 Google App Script?

java - 具有 set 方法的实例字段的访问修饰符的必要性

c++ - 我们可以像 C 中的结构一样使用 C++ 中的类吗?

实现数据类型的 Pythonic 方式(Python 2.7)