Gelagat Penunjuk "ini" dalam Fungsi JavaScript Bersarang
Soalan ini berkaitan dengan pemahaman bagaimana penunjuk "ini" berkelakuan apabila bekerja dengan fungsi bersarang dalam JavaScript. Apabila bersarang berfungsi, adalah penting untuk mempertimbangkan cara penuding "ini" diselesaikan dalam setiap skop.
Dalam kod sampel yang disediakan, penuding "ini" ditemui dalam fungsi bersarang "doSomeEffects()" apabila dipanggil dalam fungsi "displayMe()" objek "std_obj". Walau bagaimanapun, secara mengejutkan, penuding "ini" merujuk kepada objek "tetingkap" dan bukannya "std_obj" seperti yang dijangkakan.
Ini berlaku kerana penuding "ini" JavaScript terikat secara dinamik pada konteks panggilan, yang tidak ditentukan secara statik oleh pengisytiharan fungsi. Sebaliknya, nilai "ini" ditentukan pada masa fungsi dipanggil.
Apabila fungsi bersarang dipanggil, penunjuk "ini" tidak ditetapkan secara eksplisit dan tingkah laku lalai JavaScript mengambil alih. Secara lalai, penuding "ini" akan merujuk kepada objek "tetingkap" global apabila dipanggil tanpa konteks yang jelas.
Untuk menyelesaikan isu ini, kita perlu menetapkan konteks secara eksplisit untuk fungsi bersarang. Ini boleh dicapai dengan menggunakan sama ada kaedah "call()" atau "apply()". Dengan memanggil "doSomeEffects.call(this)", kita boleh mengikat penuding "ini" secara manual pada objek "std_obj".
Setelah penuding "ini" ditetapkan secara eksplisit, fungsi bersarang boleh mengakses sifat objek panggilan dengan betul. Dalam kes ini, penunjuk "ini" dalam "doSomeEffects" akan merujuk kepada objek "std_obj", membenarkan fungsi bersarang berfungsi seperti yang dimaksudkan.
Atas ialah kandungan terperinci Bagaimanakah Penunjuk \'ini\' Menyelesaikan dalam Fungsi JavaScript Bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!