Memahami 'ini' dalam Fungsi Panggilan Balik JavaScript
Dalam JavaScript, nilai 'ini' dalam fungsi ditentukan oleh cara fungsi diseru. Apabila fungsi dihantar sebagai hujah kepada fungsi lain, nilai 'ini' dalam fungsi panggil balik boleh dikawal menggunakan pelbagai kaedah.
Gelagat Lalai
Secara amnya , dalam fungsi panggil balik, 'ini' ditetapkan kepada objek global atau tidak ditentukan (dalam mod ketat) secara lalai. Ini kerana fungsi panggil balik tidak digunakan secara teknikal sebagai kaedah objek tertentu.
Menetapkan 'ini' dengan .bind()
Walau bagaimanapun, .bind () kaedah boleh digunakan untuk mengikat nilai tertentu kepada 'ini' apabila fungsi panggil balik dipanggil. Kaedah .bind() mencipta fungsi baharu yang akan sentiasa menetapkan 'ini' kepada nilai yang diluluskan sebagai argumen kepada .bind().
Contoh: Menggunakan .bind()
Dalam contoh anda:
randomFunction(this.sumData.bind(this))
Kaedah .bind() digunakan untuk mencipta fungsi baharu yang mengikat 'ini' kepada objek obj. Jadi, apabila fungsi panggil balik (this.sumData) digunakan oleh randomFunction, 'ini' akan ditetapkan kepada obj, iaitu apa yang anda jangkakan.
Perbandingan dengan Invokasi Kaedah Langsung
Sebaliknya, menggunakan kaedah langsung invocation this.sumData() dalam randomFunction akan menetapkan 'ini' kepada objek global atau tidak ditentukan kerana fungsi itu akan dipanggil sebagai fungsi biasa dan bukan sebagai kaedah objek obj.
Fungsi Anak Panah dalam ES6
Dalam ES6, fungsi anak panah mempunyai tingkah laku yang berbeza mengenai 'ini'. Mereka mengekalkan nilai leksikal 'ini' dari persekitaran di mana ia ditakrifkan. Ini bermakna tidak kira bagaimana fungsi anak panah dipanggil, 'ini' akan sentiasa merujuk kepada objek yang sama. Ini boleh membantu dalam senario tertentu, tetapi penting untuk mengetahui tingkah laku ini.
Kesimpulan
Akhirnya, nilai 'ini' dalam fungsi panggil balik ialah ditentukan oleh cara fungsi itu digunakan. Dengan memahami cara berbeza untuk mengawal 'ini', anda boleh menghantar dan memanipulasi data dengan berkesan dalam panggilan balik JavaScript.
Atas ialah kandungan terperinci Bagaimanakah \'ini\' berkelakuan dalam Fungsi Panggilan Balik JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!