Przyjęta odpowiedź jest świetna. Najlepiej, jeśli chcesz używać normalnej składni funkcji zamiast zwartej „składni funkcji strzałkowej”.
Ale może naprawdę lubisz funkcje strzałkowe; być może używasz funkcji strzałki z innego powodu, którego normalna składnia funkcji nie może zastąpić ; możesz potrzebować innego rozwiązania.
Na przykład, zauważam użycie OP this
, możesz chcieć łączyć się this
leksykalnie; aka „niewiążące tego” ), a funkcje strzałkowe są dobre dla tego leksykalnego wiązania.
Nadal możesz używać funkcji strzałkowej z funkcją pobierającą za pomocą tej Object.defineProperty
techniki.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Zobacz wzmianki o object initialization
technice (aka get NAME() {...}
) kontra defineProperty
technika (aka get : ()=>{}
) . Istnieje co najmniej jedna znacząca różnica, użycie defineProperty
wymaga, aby zmienne już istniały:
Definiowanie metody pobierającej na istniejących obiektach
tzn. Object.defineProperty
musisz upewnić się, że your_obj
(w moim przykładzie) istnieje i jest zapisany w zmiennej (podczas gdy z a object-initialization
możesz zwrócić literał obiektowy w inicjalizacji obiektu:) {..., get(){ }, ... }
. Więcej informacji na ten temat znajdziesz Object.defineProperty
tutaj
Object.defineProperty(...)
wydaje się, że obsługuje przeglądarkę porównywalną ze get NAME(){...}
składnią; nowoczesne przeglądarki, IE 9.
(method, url, something) => this.xhr.open(method. url, something)
.