Sé que las funciones de flecha vinculan el ámbito principal a la palabra clave 'esta' , pero ¿no es el mismo padre que llama a la función de flecha en estos dos escenarios?
Ambos están siendo llamados por un console.log dentro de una función "fn" . ¿Por qué recibo una salida de contexto diferente?
Esperado:
function wuwu() { this.a = () => this this.fn = function () { console.log(this) // wuwu {a: ƒ, fn: ƒ} console.log(this.a()) // wuwu {a: ƒ, fn: ƒ} } } const wewe = new wuwu() wewe.fn()No esperado:
let wuwu = { a: () => this, fn: function() { let fn2 = () => { console.log(this) // {a: ƒ, fn: ƒ} console.log(this.a()) // Window {0: Window, 1: Window, window: Window, self: Window, document: document, name: '', location: Location, …} } fn2() } } wuwu.fn()