首页 > 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
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板