ホームページ ウェブフロントエンド jsチュートリアル JavaScript の「this」キーワードを理解する

JavaScript の「this」キーワードを理解する

Jul 16, 2024 pm 04:35 PM

Understanding the `this` Keyword in JavaScript

JavaScript の this キーワードは、新しい開発者にとって最もわかりにくい概念の 1 つである可能性があります。その値は使用される場所に応じて変化する可能性があるため、さまざまなコンテキストでの動作を理解することが重要になります。この記事では、さまざまなシナリオでの this キーワードの使用法を調査することで、このキーワードの謎を解き明かします。

これは何ですか?

JavaScript では、これは関数が実行されるコンテキストを指します。これは、オブジェクト自体の内部からオブジェクトのプロパティとメソッドにアクセスする方法を提供します。

グローバルコンテキスト

グローバル コンテキスト (関数またはオブジェクトの外部) で使用される場合、これはグローバル オブジェクトを指します。 Web ブラウザでは、グローバル オブジェクトは window です。

console.log(this); // In a browser, this will log the window object
ログイン後にコピー

関数コンテキスト

関数内で使用する場合、これは関数の呼び出し方法によって異なります。

通常の関数呼び出し

通常の関数呼び出しでは、これはグローバル オブジェクト (厳密モードでは未定義) を指します。

function showThis() {
  console.log(this);
}

showThis(); // Logs window (or undefined in strict mode)
ログイン後にコピー

メソッド呼び出し

関数がオブジェクトのメソッドとして呼び出される場合、これはオブジェクト自体を参照します。

const person = {
  name: 'Alice',
  greet: function() {
    console.log(this.name);
  }
};

person.greet(); // Logs "Alice"
ログイン後にコピー

コンストラクターコンテキスト

関数が new キーワードを使用してコンストラクターとして使用される場合、これは新しく作成されたインスタンスを参照します。

function Person(name) {
  this.name = name;
}

const bob = new Person('Bob');
console.log(bob.name); // Logs "Bob"
ログイン後にコピー

アロー関数

アロー関数の動作は異なります。彼らは独自の this コンテキストを持っていません。代わりに、周囲の語彙コンテキストからこれを継承します。

const obj = {
  name: 'Carol',
  regularFunction: function() {
    console.log(this.name);
  },
  arrowFunction: () => {
    console.log(this.name);
  }
};

obj.regularFunction(); // Logs "Carol"
obj.arrowFunction();   // Logs undefined (or the global object in non-strict mode)
ログイン後にコピー

イベントハンドラ

イベント ハンドラーでは、これはイベントを受信した要素を指します。

document.getElementById('myButton').addEventListener('click', function() {
  console.log(this); // Logs the button element
});
ログイン後にコピー

明示的なバインディング

JavaScript は、call、apply、bind を使用して this の値を明示的に設定するメソッドを提供します。

電話して申し込む

call メソッドと apply メソッドを使用すると、指定された this 値で関数を呼び出すことができます。

function introduce() {
  console.log(`Hello, my name is ${this.name}`);
}

const person = { name: 'Dave' };

introduce.call(person); // Logs "Hello, my name is Dave"
introduce.apply(person); // Logs "Hello, my name is Dave"
ログイン後にコピー

call と apply の違いは、引数の処理方法です。 call は引数を個別に受け取りますが、apply は引数を配列として受け取ります。

バインド

bind メソッドは、呼び出されたときに this 値が指定された値に設定される新しい関数を作成します。

function introduce() {
  console.log(`Hello, my name is ${this.name}`);
}

const person = { name: 'Eve' };

const boundIntroduce = introduce.bind(person);
boundIntroduce(); // Logs "Hello, my name is Eve"
ログイン後にコピー

結論

JavaScript をマスターするには、this キーワードを理解することが不可欠です。これがさまざまなコンテキストでどのように動作するかを認識することで、より予測可能で保守しやすいコードを作成できます。メソッド、コンストラクター、アロー関数のいずれを使用している場合でも、これがどのように動作するかを理解すると、よくある落とし穴を回避し、そのパワーを効果的に利用するのに役立ちます。

以上がJavaScript の「this」キーワードを理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScriptの文字列文字を交換します

jQuery日付が有効かどうかを確認します jQuery日付が有効かどうかを確認します Mar 01, 2025 am 08:51 AM

jQuery日付が有効かどうかを確認します

jQueryは要素のパディング/マージンを取得します jQueryは要素のパディング/マージンを取得します Mar 01, 2025 am 08:53 AM

jQueryは要素のパディング/マージンを取得します

10 jQuery Accordionsタブ 10 jQuery Accordionsタブ Mar 01, 2025 am 01:34 AM

10 jQuery Accordionsタブ

10 jqueryプラグインをチェックする価値があります 10 jqueryプラグインをチェックする価値があります Mar 01, 2025 am 01:29 AM

10 jqueryプラグインをチェックする価値があります

ノードとHTTPコンソールを使用したHTTPデバッグ ノードとHTTPコンソールを使用したHTTPデバッグ Mar 01, 2025 am 01:37 AM

ノードとHTTPコンソールを使用したHTTPデバッグ

カスタムGoogle検索APIセットアップチュートリアル カスタムGoogle検索APIセットアップチュートリアル Mar 04, 2025 am 01:06 AM

カスタムGoogle検索APIセットアップチュートリアル

jQueryはscrollbarをdivに追加します jQueryはscrollbarをdivに追加します Mar 01, 2025 am 01:30 AM

jQueryはscrollbarをdivに追加します

See all articles