首页 > 解决方案 > 如何从点击事件中调用类函数

问题描述

我通常用 Java 编程,当我将事件侦听器添加到类中的属性时,我可以从事件中调用类中的方法。但是在 JavaScript 中,如果我使用“this”。在函数内部,上下文是“onclick”,如果我不使用“this”。我收到未定义 resetear 的错误。如何从 onclick 函数中的 Calculadora 访问属性和方法?

class Calculadora{
    constructor () {
        this.resultado = document.getElementById("resultado");
        this.c = document.getElementById("C");
        ...

        this.memoria = "";
        this.a = 0;
        this.b = 0;
        this.operacion = "";
    }

    resetear(){
        this.resultado.textContent = "";
        this.a = 0;
        this.b = 0;
        this.operacion = "";
    }

    assignar() {
        this.c.onclick = function(e){ // Here I need to change some things about Calculadora
            resultado.textContent = "";
            this.a = 0;
            this.b = 0;
            this.operacion = "";
        }
        ...
    }
}

标签: javascripthtml

解决方案


您可以onclick使用箭头函数定义处理程序:

this.c.onclick = e => {

}

这样做,this处理程序内部就是类本身。

箭头函数保留了 this 的范围,同时function创建了一个新的范围。


推荐阅读