ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript でイベント ハンドラー コールバックのコンテキストを保持するにはどうすればよいですか?

JavaScript でイベント ハンドラー コールバックのコンテキストを保持するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-06 04:22:02643ブラウズ

How Can I Preserve Context in Event Handler Callbacks in JavaScript?

イベント ハンドラー コールバックでのコンテキストの保持: 'self = this' テクニック

JavaScript では、イベント ハンドラー コールバックとしてのインスタンス メソッドがスコープを引き起こす可能性があります変化します。提供されたコードが示すように、イベント バインディングには呼び出しコンテキストを保持するための変数が必要であり、割り当て "var self = this" が行われます。

このアプローチは機能しますが、その有効性について懸念が生じます。より一般化された解決策は、埋め込み関数で変数をチャネリングするという核心的な問題に対処します。

JavaScript では、クロージャーにより外部変数へのアクセスが可能になります。ただし、「this」や「arguments」などの疑似変数は慎重に扱う必要があります。親関数内のエイリアスに割り当てると、埋め込み関数で確実に利用できるようになります。

埋め込み関数で "this" を使用するには、変数に割り当てて次を使用します。代わりにエイリアス:

var that = this;

function xyz() {
  // "this" is different here! --- but we don't care!
  console.log(that); // now it is the right object!
  
  function qwe() {
    // "this" is different here too! --- but we don't care!
    console.log(that); // it is the right object here too!
  }
  ...
};

このアプローチは「this」に限定されません。 「引数」には、組み込み関数での一貫したアクセスを確保するために同様の処理が必要です。

以上がJavaScript でイベント ハンドラー コールバックのコンテキストを保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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