ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の「setInterval」コールバック内で正しいオブジェクト インスタンスにアクセスするにはどうすればよいですか?

JavaScript の「setInterval」コールバック内で正しいオブジェクト インスタンスにアクセスするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-29 20:33:10707ブラウズ

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 のデフォルトの動作により、これは onload 関数内の window オブジェクトを参照します。

この問題を解決するには、bind() メソッドを使用して、retrieve_rate 関数を現在のオブジェクト インスタンスにバインドします。これにより、onload 関数が呼び出されたときに this キーワードが正しいオブジェクトを参照するようになります。

this.intervalID = setInterval(this.retrieve_rate.bind(this), this.INTERVAL);

このようにコードを変更することで、onload 関数が呼び出されたときに this キーワードが正しいオブジェクト インスタンスを参照するようになります。関数が呼び出され、必要に応じて prefs プロパティにアクセスできるようになります。

以上がJavaScript の「setInterval」コールバック内で正しいオブジェクト インスタンスにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。