ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の「setInterval」コールバック内で正しいオブジェクト インスタンスにアクセスするにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。