A resposta aceita é ótima. É melhor se você estiver disposto a usar a sintaxe de função normal em vez da "sintaxe de função de seta" compacta.
Mas talvez você realmente goste das funções de seta; talvez você use a função de seta por outro motivo que uma sintaxe de função normal não pode substituir ; você pode precisar de uma solução diferente.
Por exemplo, noto que o OP usa this
, você pode querer vincularthis
lexicamente; também conhecido como "não vinculativo deste" ), e as funções de seta são boas para esse vínculo léxico.
Você ainda pode usar uma função de seta com um getter por meio da Object.defineProperty
técnica.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Veja menções de object initialization
técnica (aka get NAME() {...}
) vs a defineProperty
técnica (aka get : ()=>{}
) . Há pelo menos uma diferença significativa, o uso defineProperty
requer as variáveis já existentes:
Definindo um getter em objetos existentes
ou seja, com Object.defineProperty
você deve garantir que your_obj
(no meu exemplo) existe e é salvo em uma variável (enquanto com um object-initialization
você poderia retornar um objeto-literal na inicialização do objeto:) {..., get(){ }, ... }
. Mais informações Object.defineProperty
especificamente aqui
Object.defineProperty(...)
parece ter suporte de navegador comparável à get NAME(){...}
sintaxe; navegadores modernos, IE 9.
(method, url, something) => this.xhr.open(method. url, something)
.