Estoy tratando de usar una clase de una biblioteca pero quiero anular uno de sus métodos. Así es como se define la clase:
class A { constructor (options) { this._searchForm = options.searchForm this._searchForm.addEventListener('submit', this.submitHandler.bind(this)) } submitHandler = (e) => { console.log('Default') } } Quiero anular la función submitHandler y esto es lo que hice:
class B extends A { submitHandler = (e) => { console.log('New') } }Sin embargo, todavía está llamando a la función anterior. ¿Qué estoy haciendo mal?
Un constructor de clase no debe llamar (o, en este caso, enlazar) en un método anulable (ver también aquí ). Probablemente ni siquiera debería instalar detectores de eventos; ese no es el trabajo de un constructor. Pero si aún desea hacerlo, no use campos de clase sino declaraciones de métodos:
class A { constructor (options) { this._searchForm = options.searchForm this._searchForm.addEventListener('submit', this.submitHandler.bind(this)) } submitHandler(e) { console.log('Default') } } class B extends A { submitHandler(e) { console.log('New') } }