Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Menggunakan Kata Kunci \"ini\" dengan Betul dalam Javascript's setTimeout Callback?

Bagaimana untuk Menggunakan Kata Kunci \"ini\" dengan Betul dalam Javascript's setTimeout Callback?

Barbara Streisand
Barbara Streisandasal
2024-10-24 10:37:30393semak imbas

How to Use

setTimeout dan "ini" dalam JavaScript

Apabila menggunakan fungsi setTimeout dalam JavaScript, adalah penting untuk memahami cara kata kunci ini berfungsi dalam fungsi panggil balik. Dalam sesetengah kes, anda mungkin menghadapi ralat yang menyatakan bahawa kaedah yang dirujuk tidak ditentukan selepas kelewatan tamat masa.

Pertimbangkan kod berikut:

<code class="javascript">test.prototype.method = function() {
    // method2 returns image based on the id passed
    this.method2('useSomeElement').src = "http://www.some.url";
    timeDelay = window.setTimeout(this.method, 5000);
};

test.prototype.method2 = function(name) {
    for (var i = 0; i < document.images.length; i++) {
        if (document.images[i].id.indexOf(name) > 1) {
            return document.images[i];
        }
    }
};</code>

Dalam contoh ini, fungsi kaedah dipanggil dengan tamat masa 5000 milisaat. Walau bagaimanapun, selepas tamat masa, fungsi method2 tidak lagi boleh diakses dalam fungsi panggil balik. Ini kerana kata kunci ini merujuk kepada objek global dan bukannya contoh prototaip ujian.

Untuk menyelesaikan isu ini, anda boleh mengikat kata kunci ini pada fungsi panggil balik sebelum memanggil setTimeout. Ini boleh dicapai dengan menggunakan kaedah .bind(this):

<code class="javascript">test.prototype.method = function() {
    // method2 returns image based on the id passed
    this.method2('useSomeElement').src = "http://www.some.url";
    timeDelay = window.setTimeout(this.method.bind(this), 5000);
};</code>

Dengan mengikat kata kunci ini pada fungsi panggil balik, anda memastikan bahawa fungsi method2 kekal boleh diakses walaupun selepas tamat masa telah berlalu.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Kata Kunci \"ini\" dengan Betul dalam Javascript's setTimeout Callback?. 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