ホームページ > ウェブフロントエンド > jsチュートリアル > setTimeout コールバックで「この」コンテキストを保持する方法は?

setTimeout コールバックで「この」コンテキストを保持する方法は?

DDD
リリース: 2024-12-26 16:15:09
オリジナル
767 人が閲覧しました

How to Preserve

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 - 「これ」の問題](https://qntm.org/blog/ 2009/05/この問題)

以上がsetTimeout コールバックで「この」コンテキストを保持する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート