ホームページ > ウェブフロントエンド > jsチュートリアル > Node.js モジュール、関数、イベント リスナーで「this」の動作はどのように異なりますか?

Node.js モジュール、関数、イベント リスナーで「this」の動作はどのように異なりますか?

Barbara Streisand
リリース: 2024-12-01 14:24:14
オリジナル
387 人が閲覧しました

How Does `this` Behave Differently in Node.js Modules, Functions, and Event Listeners?

Node.js のモジュールと関数の "this" を理解する

Node.js で "this" を使用する場合、その内容を理解することが重要ですコンテキストに基づいて動作を変更します。

モジュールスコープ

Node モジュール内のトップレベル コードでは、「this」は module.exports と同等です。ご覧のとおり、これは空のオブジェクトです。

関数のスコープ

関数内では、「this」は各実行前に新たに決定されます。その値は関数の呼び出し方法によって異なります:

  • aFunction(): 直接呼び出された場合、「this」はグローバル オブジェクトになります (非厳密モードのため)。
  • aFunction .call(newThis): .call() で呼び出された場合、「this」は newThis に設定されます。
  • イベント リスナー: 関数が次のように使用される場合イベント リスナー (例: addEventListener)、「this」は通常、イベントをトリガーした要素に設定されます。

ノード モジュールの読み込み

JavaScript が必要な場合ファイルをノード モジュールとして扱うと、ノード エンジンはファイルのコードを関数内にラップします。このラッパー関数は、「this」を module.exports に設定して呼び出されます。

結論

観察したさまざまな「this」の値は、「this」の使用に起因しています。さまざまな関数内:

  • var a = this; の最初の "this"ノードで作成されたモジュール ラッパー関数に属します。ここで、「this」は module.exports (空のオブジェクト) です。
  • aFunction() の 2 番目の「this」は aFunction 自体に属し、strict なしで実行された場合、これは aFunction 自体に属します。モードでは、「this」をグローバル オブジェクトに設定します。

以上がNode.js モジュール、関数、イベント リスナーで「this」の動作はどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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