setTimeout コールバックに正しい "this" コンテキストを渡す
質問:
どうすればよいですかsetTimeout コールバック関数内でクラス メソッドを実行し、コンテキストを保持します。 (つまり、「this」) クラス?
コンテキストの説明:
setTimeout を使用する場合、「this」変数はグローバル オブジェクト (ウィンドウ) を参照します。これは、クラスのプロパティにアクセスしようとするときの望ましい動作ではありません。
答え:
方法 1: ローカル参照を保存する
var that = this; if (this.options.destroyOnHide) { setTimeout(function(){ that.tip.destroy() }, 1000); }
方法 2:使用するbind()
if (this.options.destroyOnHide) { setTimeout(function(){ this.tip.destroy() }.bind(this), 1000); }
方法 3: アロー関数の使用 (ES6)
if (this.options.destroyOnHide) { setTimeout(() => { this.tip.destroy() }, 1000); }
方法 4: setTimeout (HTML5)
if (this.options.destroyOnHide) { setTimeout(function(that){ that.tip.destroy() }, 1000, this); }
参考資料:
以上がsetTimeout コールバックで「この」コンテキストを保持する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。