Rumah > hujung hadapan web > tutorial js > Bagaimanakah Penunjuk \'ini\' Menyelesaikan dalam Fungsi JavaScript Bersarang?

Bagaimanakah Penunjuk \'ini\' Menyelesaikan dalam Fungsi JavaScript Bersarang?

Barbara Streisand
Lepaskan: 2024-10-19 06:43:30
asal
656 orang telah melayarinya

How Does the

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!

sumber:php
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan