Rumah > hujung hadapan web > tutorial js > Mengapa `bind()` Tidak Berfungsi dengan Fungsi Anak Panah?

Mengapa `bind()` Tidak Berfungsi dengan Fungsi Anak Panah?

DDD
Lepaskan: 2024-12-09 03:10:17
asal
815 orang telah melayarinya

Why Doesn't `bind()` Work with Arrow Functions?

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);
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan