La réponse acceptée est excellente. C'est le meilleur si vous êtes prêt à utiliser une syntaxe de fonction normale au lieu d' une «syntaxe de fonction de flèche» compacte.
Mais peut-être que vous aimez vraiment les fonctions fléchées; peut-être que vous utilisez la fonction de flèche pour une autre raison qu'une syntaxe de fonction normale ne peut pas remplacer ; vous aurez peut-être besoin d'une solution différente.
Par exemple, je remarque que OP utilise this
, vous voudrez peut-être lier this
lexicalement; aka "non contraignant de ceci" ), et les fonctions fléchées sont bonnes pour cette liaison lexicale.
Vous pouvez toujours utiliser une fonction flèche avec un getter via la Object.defineProperty
technique.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Voir les mentions de la object initialization
technique (aka get NAME() {...}
) vs la defineProperty
technique (aka get : ()=>{}
) . Il y a au moins une différence significative, l'utilisation defineProperty
requiert que les variables existent déjà:
Définition d'un getter sur des objets existants
c'est-à-dire avec Object.defineProperty
vous devez vous assurer que your_obj
(dans mon exemple) existe et est sauvegardé dans une variable (alors qu'avec a object-initialization
vous pouvez retourner un objet-littéral dans votre initialisation d'objet:) {..., get(){ }, ... }
. Plus d'informations sur Object.defineProperty
spécifiquement, ici
Object.defineProperty(...)
semble avoir un support de navigateur comparable à la get NAME(){...}
syntaxe; navigateurs modernes, IE 9.
(method, url, something) => this.xhr.open(method. url, something)
.