首頁 > web前端 > js教程 > 如何在 JavaScript 中的「setInterval」回呼中存取正確的物件實例?

如何在 JavaScript 中的「setInterval」回呼中存取正確的物件實例?

Linda Hamilton
發布: 2024-11-29 20:33:10
原創
653 人瀏覽過

How Can I Access the Correct Object Instance Within a `setInterval` Callback in JavaScript?

從JavaScript 中的setInterval 中存取此

在JavaScript 中使用setInterval() 時,存取正確的實例可能會變得具有挑戰性回調函數中的物件。當回呼函數是物件的方法時,並且由於 JavaScript 處理事件處理的方式,this 關鍵字沒有引用所需的實例,就會出現此問題。

為了克服此限制,讓我們探索一個解決方案它利用 bind() 方法將回調函數綁定到正確的物件實例。

考慮以下範例:

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
        }
    }
登入後複製

中此範例的目標是從 AJAX 要求的 onload 處理程序中存取物件的 prefs 屬性。然而,JavaScript 的預設行為導致 this 在 onload 函數中引用 window 物件。

要解決這個問題,我們可以使用 bind() 方法將retrieve_rate 函數綁定到目前物件實例。這樣可以保證在呼叫onload函數時,this關鍵字會引用到正確的物件。

this.intervalID = setInterval(this.retrieve_rate.bind(this), this.INTERVAL);
登入後複製

透過這樣修改程式碼,我們保證onload時this引用的是正確的物件實例函數被調用,允許我們根據需要存取 prefs 屬性。

以上是如何在 JavaScript 中的「setInterval」回呼中存取正確的物件實例?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板