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

DDD
Lepaskan: 2024-10-25 04:31:29
asal
379 orang telah melayarinya

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!