Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Mengekalkan Konteks 'ini' dalam setTimeout Panggilan Balik?

Bagaimana untuk Mengekalkan Konteks 'ini' dalam setTimeout Panggilan Balik?

DDD
Lepaskan: 2024-12-26 16:15:09
asal
775 orang telah melayarinya

How to Preserve

Melalukan Konteks "ini" yang Betul untuk setTimeout Callback

Soalan:

Bagaimana boleh kami melaksanakan kaedah kelas dalam fungsi panggil balik setTimeout, mengekalkan konteks (iaitu, "ini") kelas?

Penjelasan Kontekstual:

Apabila menggunakan setTimeout, pembolehubah "ini" merujuk kepada objek global (tetingkap), yang bukan tingkah laku yang diingini apabila cuba mengakses sifat kelas atau kaedah.

Jawapan:

Kaedah 1: Menyimpan Rujukan Setempat

var that = this;
if (this.options.destroyOnHide) {
     setTimeout(function(){ that.tip.destroy() }, 1000);
}
Salin selepas log masuk

Kaedah 2: menggunakan bind()

if (this.options.destroyOnHide) {
     setTimeout(function(){ this.tip.destroy() }.bind(this), 1000);
}
Salin selepas log masuk

Kaedah 3: Menggunakan Fungsi Anak Panah (ES6)

if (this.options.destroyOnHide) {
     setTimeout(() => { this.tip.destroy() }, 1000);
}
Salin selepas log masuk

Kaedah 4: Menghantar Argumen ke setTimeout (HTML5)

if (this.options.destroyOnHide) {
     setTimeout(function(that){ that.tip.destroy() }, 1000, this);
}
Salin selepas log masuk

Bacaan Lanjut:

  • [setTimeout - Masalah 'ini'](https://qntm.org/blog/ 2009/05/masalah-ini)

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Konteks 'ini' dalam setTimeout Panggilan Balik?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan