1
resposta

Usar lambda function no descriptor.value

Eu setei o valor do descriptor value usando uma lambda function () => {} inves de escrever function () {} e o this se torna undefined. Alguem sabe o pq? Sempre achei que as duas formas de escrever dariam na mesma

1 resposta

Oii, Hadassa! Tudo bem?

Agradeço por compartilhar sua dúvida por aqui, pois pode ajudar outros colegas que tenham, já que é uma dúvida bastante comum.

Em uma função no formato function() {}, o JavaScript cria um novo contexto de this para essa função. Ou seja, o this dentro dessa função se refere ao próprio objeto que a função cria.

E quando uma função lambda ou arrow function () => {} é usada, o JavaScript não cria um novo contexto de this. O que ela faz? Ela usa o contexto de this do escopo em que a função lambda foi criada.

No exemplo que você deu, quando substituiu function() {} por () => {} no descriptor.value, o this dentro da função lambda se tornou undefined, pois não existe um contexto de this no escopo em que a função lambda foi criada.

Para exemplificar, imagine um cenário onde temos um artista que se apresenta na rua e um artista que usa o holograma para expressarem a sua respectiva arte. O artista de rua, é como se fosse a função normal, se apresenta em locais diferentes e se adapta ao público local. Já o artista do holograma, interpretado pela função setada, ele exibe sempre a mesma apresentação, independente do local que é projeto.

Espero ter ajudado a esclarecer a sua dúvida.

Qualquer coisa, compartilhe no fórum para podermos te ajudar.

Bons estudos, Hadassa!