Entendí que la palabra clave "esto" significa el contexto de ejecución actual, o donde se invocó el código. Puede ser el objeto global o un objeto que lo llamó.
const nameObj = { name: "Jack", logName: function(){ console.log(this.name)} } nameObj.logName() // JackFunciona bien para las funciones regulares, pero para las funciones de flecha devuelve el objeto global en su lugar:
const nameObj = { name: "Jack", logName: ()=> { // console.log(this.name) would be undefined console.log(this) } } nameObj.logName() // The window object on the browser's consoleTodo está claro hasta este punto, sin embargo, no puedo entender cuando se trata de anidar una función de flecha dentro de una función regular, la palabra clave "esto" en la función de flecha se refiere al objeto que lo llamó en lugar del objeto global o de ventana habitual.
const nameObj = { name: "Jack", logName: function () { return () => console.log(this.name); }, }; const arrowLogName = nameObj.logName(); arrowLogName(); // Jack¿La función de flecha "captura" implícitamente el valor "este" o algo más que me falta?