Jawaban yang diterima bagus. Ini yang terbaik jika Anda ingin menggunakan sintaks fungsi normal daripada "sintaks fungsi panah" yang ringkas.
Tapi mungkin Anda sangat menyukai fungsi panah; mungkin Anda menggunakan fungsi panah untuk alasan lain yang tidak dapat diganti oleh sintaks fungsi normal ; Anda mungkin membutuhkan solusi yang berbeda.
Misalnya, saya perhatikan penggunaan OP this, Anda mungkin ingin mengikat thissecara leksikal; alias "tidak mengikat ini" ), dan fungsi panah baik untuk pengikatan leksikal itu.
Anda masih bisa menggunakan fungsi panah dengan getter melalui Object.definePropertyteknik ini.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Lihat menyebutkan object initializationteknik (alias get NAME() {...}) vs definePropertyteknik (alias get : ()=>{}) . Setidaknya ada satu perbedaan signifikan, menggunakan definePropertymembutuhkan variabel yang sudah ada:
Mendefinisikan pengambil pada objek yang ada
yaitu dengan Object.definePropertyAnda harus memastikan bahwa your_obj(dalam contoh saya) ada dan disimpan ke dalam variabel (sedangkan dengan object-initializationAnda dapat mengembalikan objek-literal dalam inisialisasi objek Anda :) {..., get(){ }, ... }. Info lebih lanjut Object.definePropertysecara khusus, di sini
Object.defineProperty(...)tampaknya memiliki dukungan browser yang sebanding dengan get NAME(){...}sintaksis; browser modern, IE 9.
(method, url, something) => this.xhr.open(method. url, something).