Memelihara Rujukan 'ini' dalam Pengendali setInterval JavaScript
Apabila bekerja dengan fungsi setInterval() JavaScript, adalah perkara biasa untuk menemui "ini" masalah. Ini berlaku apabila anda perlu mengakses sifat atau kaedah objek dari dalam fungsi pengendali selang.
Pertimbangkan kod berikut:
prefs: null, startup: function() { // init prefs ... this.retrieve_rate(); this.intervalID = setInterval(this.retrieve_rate, this.INTERVAL); }, retrieve_rate: function() { var ajax = null; ajax = new XMLHttpRequest(); ajax.open('GET', 'http://xyz.example', true); ajax.onload = function() { // access prefs here } }
Dalam contoh ini, kami ingin mengakses sifat prefs dari dalam fungsi pengendali ajax.onload. Walau bagaimanapun, ini tidak berfungsi seperti yang dijangkakan kerana rujukan ini hilang dalam pengendali selang.
Untuk menyelesaikan masalah ini, anda boleh menggunakan kaedah bind() untuk mencipta fungsi baharu yang mengikat rujukan ini. Begini caranya:
this.intervalID = setInterval(this.retrieve_rate.bind(this), this.INTERVAL);
Dengan menggunakan bind(), kami mencipta fungsi baharu yang mempunyai rujukan ini terikat pada objek asal (ini). Ini memastikan bahawa sifat prefs dirujuk dengan betul dalam pengendali ajax.onload.
Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Konteks `ini` dalam `setInterval()` JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!