Принятый ответ великолепен. Лучше всего, если вы хотите использовать обычный синтаксис функции вместо компактного «синтаксиса стрелочной функции».
Но, может быть, вам действительно нравятся стрелочные функции; возможно, вы используете стрелочную функцию по другой причине, которую не может заменить обычный синтаксис функции ; вам может понадобиться другое решение.
Например, я заметил использование 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).