Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengalih keluar Pendengar Acara Ditambah dengan Kaedah .bind()?

Bagaimana untuk Mengalih keluar Pendengar Acara Ditambah dengan Kaedah .bind()?

Susan Sarandon
Susan Sarandonasal
2024-10-26 12:49:29509semak imbas

How to Remove Event Listeners Added with the .bind() Method?

Mengalih keluar Pendengar Acara Ditambah dengan Bind()

Apabila bekerja dengan pendengar acara dalam JavaScript, adalah penting untuk mengalih keluarnya apabila tidak diperlukan lagi, terutamanya apabila ia telah ditambah menggunakan kaedah .bind().

.bind() dan Event Listeners

Kaedah .bind() mencipta fungsi baharu yang mempunyai konteks tertentu yang terikat kepadanya. Ini membolehkan fungsi dipanggil di luar konteks di mana ia ditakrifkan pada asalnya. Dalam contoh yang disediakan:

this.myButton.addEventListener("click", this.clickListener.bind(this));

.bind(this) mencipta fungsi baharu yang memastikan kata kunci ini dalam clickListener merujuk kepada contoh MyClass.

Mengalih keluar Pendengar

Untuk melumpuhkan butang dalam contoh ini, kami perlu mengalih keluar pendengar acara. Walau bagaimanapun, memandangkan .bind() mencipta rujukan fungsi baharu, kami tidak boleh mengalih keluar fungsi asal begitu sahaja.

Penyelesaian: Simpan Rujukan Fungsi

Penyelesaian adalah untuk menyimpan rujukan fungsi dikembalikan oleh .bind() dalam pembolehubah sebelum menambahkannya sebagai pendengar acara:

const clickListenerBind = this.clickListener.bind(this);
this.myButton.addEventListener("click", clickListenerBind);

Kini, kita boleh mengalih keluar pendengar menggunakan rujukan yang disimpan:

this.myButton.removeEventListener("click", clickListenerBind);

Kaedah Lain

Walaupun kaedah yang diterangkan di atas memastikan pengalihan keluar pendengar yang ditambah dengan .bind(), tiada alternatif pilihan.

Atas ialah kandungan terperinci Bagaimana untuk Mengalih keluar Pendengar Acara Ditambah dengan Kaedah .bind()?. 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