ray88’s diary

お仕事で困ったとき用の自分用の覚書

JavaScript コンストラクタ・thisキーワード

JavaScript 目次 - ray88’s diary
クラス
 クラスとはどのようなプロパティやメソッドをインスタンスに持たせるかを定義したもの
コンストラク
 ・クラスにプロパティを定義するにはコンストラクタという特別な関数を使用する
 ・コンストラクタはクラスをインスタンス化する際に、最初に呼び出される関数
 ・コンストラクタの処理にプロパティの定義を含めておけば、インスタンス
   プロパティを持たせることができる。
 ・コンストラクタを定義するには、class文内に「constructor」という名前のメソッドを
   定義する。これをconstructorメソッドという

【constructorメソッドの構文】

constructor(仮引数1,仮引数2,・・・){
     //処理
}

【構文】
※constructorメソッドをnew演算子を用いたインスタンス生成時に呼び出す
仮引数をプロパティ値として代入すれば生成時にプロパティを持たせることができる。

new クラス名(引数1,引数2,・・・)

thisキーワード
オブジェクトにプロパティを定義する際、プロパティへの代入文は「オブジェクト.プロパティ値 = 値」というステートメントになるが
対象となるオブジェクトをコンストラクト内で表現する際にthisキーワードを使用する
コンストラクタ内で「this」と記述した場合、それはそこから生成されるインスタンスのことを表す。
つまり以下の様に記述することで、これから生成するインスタンスのプロパティに値を持たせることができる。
【構文】

this.プロパティ = 値

【サンプルコード】

function myFunction(){
  //クラス「Person」を定義
  class Person{
    constructor(name,age){
      //thisキーワードを用いてnameプロパティ、ageプロパティを定義
      this.name = name;
      this.age = age;
    }
  }
  //クラス「Person」のインスタンスを生成し、定数pに代入
  const p1 = new Person('Bob',25);
  console.log(p1);

  const p2 = new Person('Tom',32);
  console.log(p2);
}