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.definePropertytécnica.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Veja menções de object initializationtécnica (aka get NAME() {...}) vs a definePropertytécnica (aka get : ()=>{}) . Há pelo menos uma diferença significativa, o uso definePropertyrequer as variáveis já existentes:
Definindo um getter em objetos existentes
ou seja, com Object.definePropertyvocê deve garantir que your_obj(no meu exemplo) existe e é salvo em uma variável (enquanto com um object-initializationvocê poderia retornar um objeto-literal na inicialização do objeto:) {..., get(){ }, ... }. Mais informações Object.definePropertyespecificamente 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).