Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoa, estou aprendendo JavaScript e quero aprender também boas práticas. Ao olhar de vocês, ao declarar uma função em um objeto é melhor usar a forma tradicional ou a arrow? Por que usar e quando usar uma das duas? Desde já agradeço a ajuda!
Olá @lucas01andre, tudo bem?
>
25 minutos atrás, lucas01andre disse:
ao declarar uma função em um objeto é melhor usar a forma tradicional ou a arrow?
Depende! São instruções ligeiramente diferentes.
>
25 minutos atrás, lucas01andre disse:
Por que usar e quando usar uma das duas?
1 - Arrow functions não podem ser chamadas com new.
Exemplo válido:
alert( cao.nome );// Alfredo
Exemplo inválido:
// Uncaught TypeError: Cachorro is not a constructor
// Cachorro não é uma função construtora
Caso você não esteja familiarizado com OO, objetos, new, etc, você pode ignorar essa informação por enquanto.
2 - Mais importante: arrow functions lidam com o contexto de this de forma diferente na execução da função.
Como há muito material a respeito e o assunto pode ser um pouco mais extenso, deixo alguns links que certamente explicarão melhor do que eu sobre o assunto:
https://hackernoon.com/javascript-es6-arrow-functions-and-lexical-this-f2a3e2a5e8c4
https://medium.com/@raphalima8/arrow-functions-declaração-funcionamento-escopos-e-o-valor-de-this-9cb6449bca31
https://derickbailey.com/2015/09/28/do-es6-arrow-functions-really-solve-this-in-javascript/
https://udgwebdev.com/quando-nao-usar-arrow-functions/
Após a leitura, recomendo o estudo sobre o método bind(). Vai ajudar a entender melhor essa estória de "this".
Spoiler: arrow functions não são afetadas pelo bind(), enquanto as functions sim. Isso faz uma enorme diferença...