Câu trả lời được chấp nhận là tuyệt vời. Tốt nhất là bạn nên sử dụng cú pháp hàm bình thường thay vì "cú pháp hàm mũi tên".
Nhưng có thể bạn thực sự thích các chức năng mũi tên; có thể bạn sử dụng hàm mũi tên vì một lý do khác mà cú pháp hàm thông thường không thể thay thế ; bạn có thể cần một giải pháp khác.
Ví dụ, tôi nhận thấy việc sử dụng OP this
, bạn có thể muốn liên kết từ this
vựng; hay còn gọi là "không ràng buộc của điều này" ), và các hàm mũi tên rất tốt cho liên kết từ vựng đó.
Bạn vẫn có thể sử dụng hàm mũi tên với getter thông qua Object.defineProperty
kỹ thuật này.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Xem các đề cập về object initialization
kỹ thuật (hay còn gọi là get NAME() {...}
) so với defineProperty
kỹ thuật (còn gọi là get : ()=>{}
) . Có ít nhất một sự khác biệt đáng kể, việc sử dụng defineProperty
yêu cầu các biến đã tồn tại:
Xác định một getter trên các đối tượng hiện có
tức là với Object.defineProperty
bạn phải đảm bảo rằng your_obj
(trong ví dụ của tôi) tồn tại và được lưu vào một biến (trong khi với một, object-initialization
bạn có thể trả về một đối tượng-chữ trong lần khởi tạo đối tượng của bạn {..., get(){ }, ... }
:). Thông tin thêm về Object.defineProperty
cụ thể, tại đây
Object.defineProperty(...)
dường như có hỗ trợ trình duyệt tương đương với get NAME(){...}
cú pháp; trình duyệt hiện đại, IE 9.
(method, url, something) => this.xhr.open(method. url, something)
.