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

Barbara Streisand
Lepaskan: 2024-10-24 10:37:30
asal
392 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
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!