Rumah >hujung hadapan web >tutorial js >Bagaimanakah \'ini\' berkelakuan dalam Fungsi Panggilan Balik JavaScript?

Bagaimanakah \'ini\' berkelakuan dalam Fungsi Panggilan Balik JavaScript?

DDD
DDDasal
2024-11-03 22:34:03842semak imbas

How does 'this' behave in JavaScript Callback Functions?

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!

Kenyataan:
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