Принятый ответ великолепен. Лучше всего, если вы хотите использовать обычный синтаксис функции вместо компактного «синтаксиса стрелочной функции».
Но, может быть, вам действительно нравятся стрелочные функции; возможно, вы используете стрелочную функцию по другой причине, которую не может заменить обычный синтаксис функции ; вам может понадобиться другое решение.
Например, я заметил использование OP this
, вы можете захотеть выполнить лексическое связывание this
; aka «не привязка этого» ), и стрелочные функции хороши для этой лексической привязки.
Вы все еще можете использовать стрелочную функцию с геттером через эту Object.defineProperty
технику.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
См. Упоминания object initialization
техники (ака get NAME() {...}
) и defineProperty
техники (ака get : ()=>{}
) . Есть по крайней мере одно существенное отличие: для использования defineProperty
требуются переменные, которые уже существуют:
Определение геттера для существующих объектов
то есть с Object.defineProperty
вы должны убедиться, что your_obj
(в моем примере) существует и сохраняется в переменной (тогда как с помощью object-initialization
вы можете вернуть объектный литерал при инициализации вашего объекта :) {..., get(){ }, ... }
. Более подробная информация Object.defineProperty
здесь
Object.defineProperty(...)
похоже, имеет сопоставимую поддержку браузера с get NAME(){...}
синтаксисом; современные браузеры, IE 9.
(method, url, something) => this.xhr.open(method. url, something)
.