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 this
lessicalmente; 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.defineProperty
tecnica.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Vedi menzioni di object initialization
tecnica (aka get NAME() {...}
) vs defineProperty
tecnica (aka get : ()=>{}
) . C'è almeno una differenza significativa, l'utilizzo defineProperty
richiede che le variabili già esistano:
Definizione di un getter su oggetti esistenti
cioè con Object.defineProperty
devi assicurarti che your_obj
(nel mio esempio) esista e venga salvato in una variabile (mentre con a object-initialization
potresti restituire un oggetto letterale nell'inizializzazione dell'oggetto :) {..., get(){ }, ... }
. Maggiori informazioni in Object.defineProperty
particolare, 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)
.