As funções de seta do ES6 ainda fecham sobre "isto" mesmo que não o usem?
Estou tentando entender as regras de quandothis
é ligado lexicamente em uma função de seta ES6. Vamos primeiro olhar para isso:
function Foo(other) {
other.callback = () => { this.bar(); };
this.bar = function() {
console.log('bar called');
};
}
Quando eu construo umnew Foo(other)
, um retorno de chamada é definido nesse outro objeto. O retorno de chamada é uma função de seta e othis
na função de seta está lexicamente ligada aoFoo
instância, então oFoo
não será coletado lixo, mesmo que eu não guarde nenhuma outra referência aoFoo
por aí.
O que acontece se eu fizer isso?
function Foo(other) {
other.callback = () => { };
}
Agora, defino o retorno de chamada como nop e nunca mencioneithis
iniciar.Minha pergunta é: a função de seta ainda se liga lexicamente athis
, mantendo oFoo
vivo enquantoother
está vivo ou podeFoo
ser lixo coletado nessa situação?