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 this
secara leksikal; alias "tidak mengikat ini" ), dan fungsi panah baik untuk pengikatan leksikal itu.
Anda masih bisa menggunakan fungsi panah dengan getter melalui Object.defineProperty
teknik ini.
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
Lihat menyebutkan object initialization
teknik (alias get NAME() {...}
) vs defineProperty
teknik (alias get : ()=>{}
) . Setidaknya ada satu perbedaan signifikan, menggunakan defineProperty
membutuhkan variabel yang sudah ada:
Mendefinisikan pengambil pada objek yang ada
yaitu dengan Object.defineProperty
Anda harus memastikan bahwa your_obj
(dalam contoh saya) ada dan disimpan ke dalam variabel (sedangkan dengan object-initialization
Anda dapat mengembalikan objek-literal dalam inisialisasi objek Anda :) {..., get(){ }, ... }
. Info lebih lanjut Object.defineProperty
secara 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)
.