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); }
Kaedah 2: menggunakan bind()
if (this.options.destroyOnHide) { setTimeout(function(){ this.tip.destroy() }.bind(this), 1000); }
Kaedah 3: Menggunakan Fungsi Anak Panah (ES6)
if (this.options.destroyOnHide) { setTimeout(() => { this.tip.destroy() }, 1000); }
Kaedah 4: Menghantar Argumen ke setTimeout (HTML5)
if (this.options.destroyOnHide) { setTimeout(function(that){ that.tip.destroy() }, 1000, this); }
Bacaan Lanjut:
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!