Memahami Tujuan "var that = this;" dalam JavaScript
Apabila bekerja dengan JavaScript, anda mungkin menemui coretan kod yang menyertakan pernyataan "var that = this;". Konstruk ini memainkan peranan penting dalam mengekalkan konteks "ini" dalam fungsi bersarang, terutamanya dalam pengendali acara.
Dalam JavaScript, kata kunci "ini" mewakili konteks semasa atau objek yang memiliki kod yang digunakannya. masuk. Walau bagaimanapun, apabila fungsi digunakan dalam fungsi lain, nilai "ini" berubah. Ini boleh membawa kepada gelagat yang tidak dijangka, terutamanya dalam kod terdorong peristiwa di mana pengendali acara berada dalam panggilan balik.
Tujuan menugaskan "ini" kepada "itu" adalah untuk menangkap konteks semasa objek sebelum ia hilang kerana kepada perubahan skop. Dengan menamakan "ini" kepada "itu", anda memastikan bahawa nilai asal "ini" kekal boleh diakses walaupun dalam fungsi bersarang.
Pertimbangkan contoh berikut:
$('#element').click(function() { // this is a reference to the element clicked on var that = this; $('.elements').each(function() { // this is a reference to the current element in the loop // that is still a reference to the element clicked on }); });
Dalam kod ini , fungsi pengendali acara mempunyai akses kepada elemen yang telah diklik melalui kata kunci "ini". Walau bagaimanapun, dalam fungsi bersarang (setiap()), nilai "ini" merujuk kepada elemen semasa dalam gelung. Dengan menangkap "ini" sebagai "itu" dalam fungsi luar, anda masih boleh mengakses elemen yang pada mulanya diklik.
Menggunakan alias selain daripada "itu" ialah amalan yang disyorkan untuk kebolehbacaan. Dalam contoh di atas, alias yang lebih deskriptif seperti "clickedEl" akan menjadikannya lebih jelas maksud pembolehubah itu.
Sebagai kesimpulan, "var that = this;" ialah teknik biasa dalam JavaScript untuk mengekalkan nilai "ini" merentas skop yang berbeza. Ia memastikan bahawa konteks asal objek dikekalkan walaupun apabila fungsi bersarang digunakan.
Atas ialah kandungan terperinci Mengapa Gunakan 'var that = this;' dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!