Прийнята відповідь чудова. Найкраще, якщо ви бажаєте використовувати звичайний синтаксис функції замість компактного "синтаксису функції стрілки".
Але, можливо, вам дуже подобаються функції стрілок; можливо, ви використовуєте функцію стрілки з іншої причини, яку звичайний синтаксис функції не може замінити ; Вам може знадобитися інше рішення.
Наприклад, я помічаю, як 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)
.