Rumah >hujung hadapan web >tutorial js >Mengapakah JavaScript bind() Diperlukan untuk Mengekalkan Nilai \'ini\' dalam Panggilan Balik Asynchronous dan Argumen Fungsi?

Mengapakah JavaScript bind() Diperlukan untuk Mengekalkan Nilai \'ini\' dalam Panggilan Balik Asynchronous dan Argumen Fungsi?

DDD
DDDasal
2024-10-25 04:31:29453semak imbas

Why is JavaScript bind() Required for Preserving 'this' Value in Asynchronous Callbacks and Function Arguments?

Mengapa JavaScript bind() Diperlukan?

Dalam JavaScript, kata kunci ini merujuk kepada objek yang memiliki fungsi yang sedang dilaksanakan. Walau bagaimanapun, dalam panggilan balik tak segerak atau apabila menghantar fungsi sebagai argumen kepada fungsi lain, nilai ini boleh hilang.

Keperluan untuk bind()

Apabila fungsi dipanggil sebagai kaedah objek (cth., object.method()), ini merujuk objek dengan betul. Walau bagaimanapun, apabila fungsi itu digunakan sebagai fungsi kendiri (cth., method()), ini akan menjadi lalai kepada objek global.

Untuk mengelakkan isu ini, bind() membenarkan anda menentukan nilai ini secara manual apabila memanggil fungsi pada masa hadapan. Ia mengembalikan fungsi baharu dengan nilai ini terikat pada objek yang ditentukan.

Penyelesaian dalam Contoh 2

Dalam Contoh 2, bind() digunakan untuk mencipta fungsi baharu (storeMyName2) yang mempunyai rujukan ini terikat kepada myName. Ini memastikan bahawa apabila fungsi baharu dipanggil, ini akan merujuk kepada myName, tanpa mengira cara ia dipanggil.

Perbandingan dengan Contoh 3

Dalam Contoh 3, storeMyName3 ditetapkan kepada hasil daripada memanggil myName.getName() secara terus. Ini bermakna storeMyName3 mengandungi nilai yang dikembalikan, iaitu hanya rentetan "Tom." Ia bukan fungsi seperti storeMyName dan storeMyName2, jadi ia tidak melibatkan konsep ini.

Atas ialah kandungan terperinci Mengapakah JavaScript bind() Diperlukan untuk Mengekalkan Nilai \'ini\' dalam Panggilan Balik Asynchronous dan Argumen Fungsi?. 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