La risposta accettata è ottima. È la soluzione migliore se si desidera utilizzare la sintassi della funzione normale invece della sintassi compatta della "funzione freccia".
Ma forse ti piacciono molto le funzioni delle frecce; forse usi la funzione freccia per un altro motivo che una normale sintassi di funzione non può sostituire ; potresti aver bisogno di una soluzione diversa.
Ad esempio, ho notato che l'OP utilizza this, potresti voler legare thislessicalmente; aka "non vincolante di questo" ), e le funzioni freccia sono buone per quel vincolo lessicale.
È ancora possibile utilizzare una funzione freccia con un getter tramite la Object.definePropertytecnica.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Vedi menzioni di object initializationtecnica (aka get NAME() {...}) vs definePropertytecnica (aka get : ()=>{}) . C'è almeno una differenza significativa, l'utilizzo definePropertyrichiede che le variabili già esistano:
Definizione di un getter su oggetti esistenti
cioè con Object.definePropertydevi assicurarti che your_obj(nel mio esempio) esista e venga salvato in una variabile (mentre con a object-initializationpotresti restituire un oggetto letterale nell'inizializzazione dell'oggetto :) {..., get(){ }, ... }. Maggiori informazioni in Object.definePropertyparticolare, qui
Object.defineProperty(...)sembra avere un supporto browser paragonabile alla get NAME(){...}sintassi; browser moderni, IE 9.
(method, url, something) => this.xhr.open(method. url, something).