Tengo un problema con el alcance de la palabra clave 'esto'.
El código por ejemplo es:
class Burger { sleep() { // To sleep } pourSauce(sauce: string) { // To pour sauce this.sleep(); } } class Hesburger extends Burger { constructor() { super(); } private bun: string = 'bunny'; foo(): void { this.tmp(this.fat); } private fat(): void { super.pourSauce(this.bun); } private tmp(callBack: () => void): void { callBack(); } }En algún lugar llamo:
Hesburger.foo();Recibo el error:
"bollo" no está definido
Encontré la publicación que describe la solución para transmitir una función. Pero no hay idea sobre la propiedad de una clase.
¿Alguien puede aconsejar transitar el valor de la variable 'bun' 'bunny' a la función fat() , de modo que se transmita más a la función pourSauce() ?
¡Gracias!
El problema es con la siguiente línea.
this.tmp(this.fat); donde está pasando la función fat como devolución de llamada a la función tmp . Pero a pesar de que está pasando this.fat , siempre es solo una función, que no está vinculada a un contexto específico (es decir, ya no tiene un this definido). Puede solucionar este problema vinculando explícitamente la función a un contexto específico
this.tmp(this.fat.bind(this))