Considere el siguiente fragmento de código.
function outsiderFunction(opt){ opt.helperMethod(); } class SomeClass { constructor(options) { this.options = options; } update() { outsiderFunction({ helperMethod: this.help }) } help() { this.helpUtil(); } helpUtil() { console.log('help util') } } const x = new SomeClass(); x.update();La función de actualización de SomeClass llama a outsiderFunction pasando el método de ayuda como una de las funciones ( ayuda ) de la misma clase.
Pero ahora la función de ayuda también necesita llamar a una de las funciones de esa clase llamada helpUtil, pero dado que fue llamada por una función externa, esta referencia se refiere a la función externa y no a la clase.
Nota: no puedo traer una función externa dentro de la clase
Un tipo de solución alternativa que hice es como se muestra a continuación:
function outsiderFunction(opt){ opt.helperMethod(); } class SomeClass { constructor(options) { this.options = options; } update() { outsiderFunction({ helperMethod: this.help, ReferenceClass: this }) } help() { let that = this.ReferenceClass; that.helpUtil(); } helpUtil() { console.log('help util') } } const x = new SomeClass(); x.update();Ahora, quiero saber si hay una mejor manera de manejar esta situación ya que la solución alternativa no parece ser una buena práctica.