「this」キーワードを使いこなして、JavaScriptマスターへの道を歩め!

2024-04-07

JavaScriptにおける「this」キーワードの動作

関数内で「this」を使う

function sayName() {
  console.log(this.name); // "John"
}

const person = {
  name: "John",
  sayName: sayName,
};

person.sayName(); // "John"

この例では、sayName関数はpersonオブジェクトのメソッドとして呼び出されています。そのため、関数内部でのthispersonオブジェクト自身を指し、console.lognameプロパティを出力すると "John" と表示されます。

アロー関数と「this」

アロー関数では、thisは常にそのアロー関数を定義したスコープを指します。

const person = {
  name: "John",
  sayName: () => {
    console.log(this.name); // "John"
  },
};

person.sayName(); // "John"

この例では、sayName関数はアロー関数として定義されています。personオブジェクトのメソッドとして呼び出されても、thispersonオブジェクトではなく、アロー関数を定義したpersonオブジェクトのプロパティsayNameのスコープを指します。

その他の「this」の動作

  • 関数オブジェクトとして呼び出された場合は、thisはグローバルオブジェクト(厳格モードではundefined)を指します。
  • コンストラクタ内で呼び出された場合は、thisは新しく作成されたオブジェクトを指します。
  • イベントハンドラ内で呼び出された場合は、thisはイベントが発生した要素を指します。

「this」キーワードは、JavaScriptの重要な概念の一つです。関数内で「this」を使う場合は、実行コンテキストによって異なる値を指すことを理解しておく必要があります。




関数内で「this」を使う

function sayName() {
  console.log(this.name); // "John"
}

const person = {
  name: "John",
  sayName,
};

person.sayName(); // "John"

アロー関数と「this」

const person = {
  name: "John",
  sayName: () => {
    console.log(this.name); // "John"
  },
};

person.sayName(); // "John"

その他の「this」の動作

  • 関数オブジェクトとして呼び出された場合
function sayName() {
  console.log(this.name); // "undefined"
}

sayName(); // "undefined"
  • コンストラクタ内で呼び出された場合
function Person(name) {
  this.name = name;
  console.log(this.name); // "John"
}

const person = new Person("John"); // "John"
const button = document.querySelector("button");

button.addEventListener("click", function() {
  console.log(this.textContent); // "Click me!"
});



「this」キーワードの動作を理解するための他の方法

デバッグツールを使う

多くのブラウザの開発者ツールには、実行中のコードのスコープと「this」キーワードの値を表示できる機能があります。これらのツールを使って、コードの実行中に「this」キーワードがどのように変化するかを確認できます。

チュートリアルや記事を読む

「this」キーワードに関するチュートリアルや記事は、インターネット上でたくさん公開されています。これらの資料を読むことで、「this」キーワードの動作についてより深く理解することができます。

実際にコードを書いてみることは、「this」キーワードの動作を理解するための最も効果的な方法です。さまざまな方法で「this」キーワードを使ってみて、その結果を観察してみましょう。

「this」キーワードは、JavaScriptの重要な概念の一つです。上記の方法を使って、「this」キーワードの動作をしっかりと理解しておきましょう。


javascript this language-design


JavaScript正規表現:グループを使いこなして処理を効率化

match メソッドは、正規表現と一致する部分文字列を配列として返します。この配列の最初の要素は、全体一致した文字列です。そして、2番目以降の要素は、グループに一致した文字列が順番に格納されます。この例では、電話番号を表す正規表現を使用しています。(\d{3}) というグループは、3桁の数字に一致します。そして、matches 配列の 2番目から 4番目までの要素には、それぞれグループに一致した数字が格納されています。...


JavaScriptで配列をランダムにシャッフルする方法

Fisher-Yatesアルゴリズムは、配列をランダムにシャッフルする最も一般的なアルゴリズムの一つです。以下の手順で実装できます。配列の長さ (length) を取得します。ループを length - 1 回実行します。 現在のループカウンタ (i) と、length - 1 からランダムな値 (j) を生成します。 配列の i 番目と j 番目の要素を入れ替えます。...


JavaScript で URL をマッチさせる:状況に応じて使い分ける最適な戦略

ウェブ開発において、URL を処理することは頻繁に行われます。ユーザー入力の検証、リンクの生成、データの抽出など、様々な場面で URL を扱う必要があります。そこで、今回は JavaScript で URL をマッチさせるための正規表現について、分かりやすく解説します。...


【サンプルコード付き】AngularJSで$scope.$emitと$scope.$onを用いたイベント通信のすべて

$scope. $emitは、イベントを発行するメソッドです。イベントは、あるスコープで発生し、親スコープへ伝達されます。親スコープでイベントを処理したい場合は、$scope. $onメソッドを使用してイベントリスナーを登録する必要があります。...


JestとReact Testing Libraryを使って、要素が存在しないことを効率的にテストする方法

JestとReact Testing Libraryは、Reactコンポーネントのテストに役立つツールです。このチュートリアルでは、これらのツールを使って要素が存在しないことをテストする方法について説明します。前提条件Node. jsとnpmまたはyarnがインストールされていること...


SQL SQL SQL SQL Amazon で見る



JavaScriptのthisキーワード:使いこなしてコードをレベルアップ

1 関数呼び出し関数内で this を使用すると、その関数を呼び出したオブジェクトを参照します。例:2 オブジェクトリテラルオブジェクトリテラル内のメソッド内で this を使用すると、そのオブジェクト自身を参照します。3 コンストラクタコンストラクタ内で this を使用すると、生成されるオブジェクトを参照します。