从 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中文网其他相关文章!