He definido una clase que contiene un captador que devuelve una función lambda. Me gustaría cambiar el "esto" utilizado en la función devuelta, pero no encontré ninguna forma de hacerlo. Hice muchos intentos con function.call pero no importa qué, no obtuve el resultado esperado. ¡Así que necesito ayuda!
Aquí hay un código mínimo que reproduce el problema:
class A { get fn() { return () => [this.name, this]; } } let a = new A(); a.name = "a"; let b = { name: "b" }; window.console.log(a.fn.call(b)); // How to get "b" ?El resultado es :
[ "a", { "name": "a" } ] ¿Cómo aplicar la función lambda devuelta a b ? y recibir el resultado esperado:
[ "b", { "name": "b" } ]Debe tomar una función estándar en lugar de una función de flecha.
class A { get fn() { return function () { return [this.name, this]; } } } let a = new A(); a.name = "a"; let b = { name: "b" }; console.log(a.fn.call(b)); // How to get "b" ?