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ę thisleksykalnie; 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.definePropertytechniki.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Zobacz wzmianki o object initializationtechnice (aka get NAME() {...}) kontra definePropertytechnika (aka get : ()=>{}) . Istnieje co najmniej jedna znacząca różnica, użycie definePropertywymaga, aby zmienne już istniały:
Definiowanie metody pobierającej na istniejących obiektach
tzn. Object.definePropertymusisz upewnić się, że your_obj(w moim przykładzie) istnieje i jest zapisany w zmiennej (podczas gdy z a object-initializationmożesz zwrócić literał obiektowy w inicjalizacji obiektu:) {..., get(){ }, ... }. Więcej informacji na ten temat znajdziesz Object.definePropertytutaj
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).