¿Las funciones de flecha ES6 todavía se cierran sobre "esto" incluso si no lo usan?
Estoy tratando de entender las reglas de cuandothis
está ligado léxicamente en una función de flecha ES6. Primero veamos esto:
function Foo(other) {
other.callback = () => { this.bar(); };
this.bar = function() {
console.log('bar called');
};
}
Cuando construyo unnew Foo(other)
, se establece una devolución de llamada en ese otro objeto. La devolución de llamada es una función de flecha, y elthis
en la función de flecha está ligado léxicamente a laFoo
ejemplo, entonces elFoo
no se recolectará basura aunque no guarde ninguna otra referencia alFoo
alrededor.
¿Qué sucede si hago esto en su lugar?
function Foo(other) {
other.callback = () => { };
}
Ahora configuro la devolución de llamada a un nop, y nunca mencionothis
en eso.Mi pregunta es: ¿la función de flecha todavía se une léxicamente athis
, manteniendo elFoo
vivo mientrasother
está vivo, o que elFoo
ser basura recogida en esta situación?