Rumah >hujung hadapan web >tutorial js >Bagaimanakah Corak Invokasi Mempengaruhi Kata Kunci `ini` dalam JavaScript?
Bagaimana Corak Invokasi Mempengaruhi Kata Kunci "ini" dalam JavaScript
Apabila bekerja dengan JavaScript, anda mungkin menghadapi tingkah laku luar biasa yang berkaitan dengan "ini" " kata kunci dalam definisi fungsi. Artikel ini menyelidiki selok-belok cara corak seruan mempengaruhi nilai "ini" dan memberikan pemahaman menyeluruh tentang tingkah lakunya.
Sebelum menyelidiki lebih lanjut, adalah penting untuk menjelaskan bahawa JavaScript tidak mempunyai kelas seperti tradisional bahasa berorientasikan objek. Sebaliknya, ia bergantung pada objek dan fungsi, dengan kelas menjadi gula sintaksis. Pemahaman ini membentuk asas untuk mentafsir tingkah laku "ini".
Corak Invokasi dan "ini"
Nilai "ini" bergantung pada cara fungsi dipanggil, yang disebut sebagai pola seruan. Terdapat empat corak utama:
1. Sebagai Kaedah:
Apabila fungsi dipanggil sebagai kaedah objek, "ini" terikat pada objek itu sendiri.
Contoh:
// foo is the object foo.bar = function() { alert(this); }; // "this" is bound to the foo object foo.bar();
2. Sebagai Fungsi:
Jika digunakan sebagai fungsi yang berdiri sendiri, "ini" terikat pada objek global, biasanya objek "tetingkap" dalam penyemak imbas.
Contoh:
// Global function var baz = function() { alert(this); }; // "this" is bound to the window object baz();
3. Sebagai Pembina:
Dipanggil menggunakan kata kunci "baharu", "ini" terikat pada objek yang baru dibuat. Ini meniru tingkah laku seperti kelas.
Contoh:
// Constructor function function MyClass() { this.property = 'value'; } // "this" is bound to the new instance var instance = new MyClass();
4. Menggunakan Kaedah Guna:
Kaedah fungsi "gunakan" membolehkan anda mentakrifkan nilai "ini" secara eksplisit bersama-sama dengan argumen.
Contoh:
var args = [1, 2]; var obj = { prop: 'value' }; // "this" is bound to the obj object, and args is passed as the arguments fun.apply(obj, args);
Gelagat Tidak Dijangka Pertimbangan:
Jika fungsi dalaman yang digunakan sebagai panggil balik digunakan dengan corak yang berbeza daripada definisinya, ketidakkonsistenan dalam tingkah laku "ini" boleh timbul. Ini sering ditemui apabila mentakrifkan kaedah menggunakan tatatanda objek-harfiah, di mana fungsi dalaman memanggil panggilan balik sebagai fungsi, mengakibatkan "ini" mengikat objek global dan bukannya objek yang dimaksudkan.
Untuk menangani isu ini, Corak "var that = this" digunakan secara meluas. Dengan menyimpan rujukan kepada "ini" dalam penutupan, seruan fungsi dalaman berikutnya masih boleh mengakses nilai "ini" yang dimaksudkan.
Atas ialah kandungan terperinci Bagaimanakah Corak Invokasi Mempengaruhi Kata Kunci `ini` dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!