Прийнята відповідь чудова. Найкраще, якщо ви бажаєте використовувати звичайний синтаксис функції замість компактного "синтаксису функції стрілки".
Але, можливо, вам дуже подобаються функції стрілок; можливо, ви використовуєте функцію стрілки з іншої причини, яку звичайний синтаксис функції не може замінити ; Вам може знадобитися інше рішення.
Наприклад, я помічаю, як OP використовує this, можливо, ви захочете пов’язати thisлексично; він же "необов'язковість цього" ), а функції стрілок хороші для цього лексичного прив'язки.
Ви все ще можете використовувати функцію стрілки з геттером за допомогою Object.definePropertyтехніки.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Див. Згадки про object initialization техніку (вона ж get NAME() {...}) протиdefineProperty техніки (вона ж get : ()=>{}) . Існує принаймні одна суттєва різниця, використанняdefinePropertyвимагає, щоб змінні вже існували:
Визначення геттера для існуючих об'єктів
тобто Object.definePropertyви повинні переконатися, що your_obj(у моєму прикладі) існує та зберігається у змінній (тоді як за допомогою a object-initializationви можете повернути об’єкт-літерал в ініціалізації об’єкта:) {..., get(){ }, ... }. Детальніше про це Object.defineProperty, тут
Object.defineProperty(...)схоже, що підтримка браузера порівнянна із get NAME(){...}синтаксисом; сучасні браузери, IE 9.
(method, url, something) => this.xhr.open(method. url, something).