Mengikat 'ini' dalam Fungsi Anak Panah
Fungsi anak panah, yang diperkenalkan dalam ES6, telah menjadi popular kerana sintaksnya yang ringkas. Walau bagaimanapun, satu had fungsi anak panah ialah ketidakupayaan mereka untuk mengikat semula 'ini'. Tidak seperti fungsi biasa, fungsi anak panah mewarisi pengikatan 'ini' daripada konteks sekeliling pada masa definisi.
Dalam contoh yang disediakan, fungsi anak panah:
var f = () => console.log(this);
ditakrifkan dalam skop global. Oleh itu, 'ini' merujuk kepada objek tetingkap global, bukan kepada objek 'o' yang kami cuba untuk mengikat fungsi:
var fBound = f.bind(o); fBound(); // Logs the window object
Untuk menyelesaikan isu ini, jangan gunakan fungsi anak panah. Sebaliknya, tentukan fungsi biasa:
var f = function() { console.log(this); }.bind(o); f(); // Logs the 'o' object
Dalam kes ini, pengikatan 'ini' ditetapkan dengan betul kepada objek 'o' kerana fungsi biasa digunakan, membenarkan pengikatan ditetapkan semula.
Atas ialah kandungan terperinci Mengapa `bind()` Tidak Berfungsi dengan Fungsi Anak Panah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!