從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中文網其他相關文章!