Tengo este código js, cuando se ejecuta el "clic del usuario" se imprime de manera efectiva, pero se produce un error al intentar ejecutar funA:
app.js:13 TypeError no detectado: this.funA no es una función en HTMLBodyElement.handleclick (app.js:13:14)
Supongo que el intérprete aún no ha leído la función funA en el momento de ejecutar handleclick. Qué sucede aquí y cómo podría resolver esto.
class UI { constructor() { this.body = document.querySelector("body") this.body.onclick = this.handleclick } funA() { console.log("called funA") } handleclick(e) { console.log("user clicked") this.funA() } } new UI()Cuando establece la función de esa manera, el elemento del cuerpo tiene el contexto de this .
Guarde el contexto de this con la función .bind
class UI { constructor() { this.body = document.querySelector("body") this.body.onclick = this.handleclick.bind(this); } funA() { console.log("called funA") } handleclick(e) { console.log("user clicked") this.funA() } } new UI() body { width: 100%; height: 100vh; } <p>lorem ipsum</p>