Bagaimana untuk Mengalih keluar Pendengar Acara dengan Berkesan Apabila Menggunakan `bind()` dalam JavaScript?

Barbara Streisand
Lepaskan: 2024-10-26 02:59:27
asal
567 orang telah melayarinya

How to Remove Event Listeners Effectively When Using `bind()` in JavaScript?

Alih Keluar Pendengar Acara dengan bind()

Dalam JavaScript, kaedah addEventListener() boleh digunakan untuk melampirkan pendengar acara pada elemen. Walau bagaimanapun, apabila menggunakan kaedah bind() untuk mengikat fungsi pendengar pada objek, mengalih keluar pendengar boleh menjadi satu cabaran.

Satu pendekatan biasa ialah mengekalkan senarai fungsi pendengar terikat. Ini membolehkan penyingkiran mudah dengan menyediakan rujukan fungsi yang sama kepada kaedah removeEventListener().

<code class="javascript">// Constructor
MyClass = function() {
    this.myButton = document.getElementById("myButtonID");
    this.listenerList = [];

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

// Prototype method
MyClass.prototype.clickListener = function(event) {
    console.log(this); // must be MyClass
}

// Public method
MyClass.prototype.disableButton = function() {
    this.listenerList.forEach((listener) => removeEventListener('click', listener));
}</code>
Salin selepas log masuk

Pendekatan alternatif adalah untuk menetapkan rujukan fungsi terikat kepada pembolehubah, seperti yang dicadangkan oleh penyelesaian:

<code class="javascript">var boundClickListener = this.clickListener.bind(this);
this.myButton.addEventListener("click", boundClickListener);
this.myButton.removeEventListener("click", boundClickListener);</code>
Salin selepas log masuk

Dengan menggunakan fungsi terikat secara langsung, anda mengelakkan keperluan untuk mengekalkan senarai pendengar terikat, memudahkan proses pengalihan keluar.

Atas ialah kandungan terperinci Bagaimana untuk Mengalih keluar Pendengar Acara dengan Berkesan Apabila Menggunakan `bind()` dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!