JavaScript - オブジェクト指向

クラスとインスタンス生成

Car クラスは以下のとおり定義できます。

class Car {
}
クラスの定義

コンストラクタ constructor() は、オブジェクトを生成する際に初期化関数として呼ばれるメソッドを定義します。

class Car {
    constructor() {
    }
}
コンストラクタの定義

オブジェクトのインスタンスを生成するには new を使います。

const car1 = new Car();
インスタンスの生成

オブジェクトのインスタンスを削除するには delete を使います。

delete car1;
インスタンスの削除

オブジェクトがインスタンスであるかどうか確認するためには instanceof 演算子を使います。

class Car {
}

const car1 = new Car();
console.log(car1 instanceof Car) // true
instanceof 演算子によるインスタンスの確認

Car クラスにメソッドを追加する例は以下になります。クラスの定義を書く際には this によって、具体的に生成されたインスタンスを指します。

class Car {
    constructor(make) {
        this.make = make;
    }
    
    getMake() {
        return this.make;
    }
}
メソッドの追加

インスタンスを生成する例は以下のとおりです。

const car1 = new Car("SUBARU");
console.log(car1.getMake()); // SUBARU
インスタンス生成とメソッドの実行

アクセサプロパティ

アクセサプロパティは、ゲッター get() と、セッター set() を定義します。アクセサプロパティは、プロパティに対して代入や参照を行うためのメソッドです。

class Car {
    get make() {
        return this._make;
    }
    set make(arg) {
        this._make = arg;
    }
}

const car1 = new Car();

car1.make = "SUBARU";
console.log(car1.make);
アクセサプロパティ

プロトタイプ

prototype は、定義済のクラスに変数やメソッドを追加することができます。

class Car {
}

Car.prototype.type = "Unknown";

const car1 = new Car();
console.log(car1.type); // Unknown
プロトタイプ

静的メソッド

静的メソッドは static で定義します。静的メソッドは、オブジェクトを生成しなくても クラス名.静的メソッド() で呼び出すことができるメソッドです。

class sayHello {
  static hello() {
    console.log("Hello!");
  }
}

sayHello.hello(); // Hello!
静的メソッド

継承

クラスは継承することができます。継承元をスーパークラス (親クラス)、継承先をサブクラス (子クラス) と呼びます。子クラスは、親クラスのメソッドや変数を継承することができます。クラスを継承するためには extends で定義します。

class Parent {
    current1() {
        console.log("Parent!");
    }
}

class Child extends Parent {
    current2() {
        console.log("Child!");
    }
}

const c = new Child();
c.current1(); // Parent!
c.current2(); // Child!
継承

関連記事

JavaScript のまとめページはプログラミング JavaScript 入門を参照してください。

Category:
プログラミング
公開日:
更新日:
Pageviews:
144
Shares:
1
Tag:
JavaScript