クラスを定義する
class MyClass {
constructor(x = 0, y = 0) {
this.x = x;
this.y = y;
this.myField = "orange"
}
myMethod() {
console.log(this.myField);
}
static myStaticMethod() {
console.log("staticメソッド");
}
}
class MyChildClass extends MyClass {
constructor(x, y) {
super(x, y);
}
myMethod() {
super.myMethod();
console.log(`子クラスのメソッド ${this.myField}`);
}
}
const myInstance = new MyChildClass();
console.log(myInstance);
console.log(myInstance.myField);
myInstance.myMethod();
MyClass.myStaticMethod();
コンストラクタ
初期値を定義する
thisはクラス自身のこと
constractor内ではletやconstの記述がない
super() を書くと、親クラスのコンストラクタが呼ばれる
// 条件演算子(3項演算子)を使った初期値の設定
constructor(x, y) {
this.x = (typeof x === "number") ? x : 0;
this.y = (typeof y === "number") ? y : 0;
}
静的メソッド
static myStaticMethod() {
console.log("staticメソッド");
}インスタンスを作らずに実行されるメソッド
静的メソッド内では this を使うことが出来ない
クラス内で使われる this は、このクラスから作られるインスタンスのことなので、インスタンスを作らずに実行される静的メソッド内では this をつかうことが出来ない
静的メソッドの呼び出し
クラス名.静的メソッド名 で実行される
MyClass.myStaticMethod();
メソッド
メソッド内に super().メソッド名 を書くと、親クラスのメソッドが実行される
myMethod() { // 子クラスのメソッド
super.myMethod(); // 親クラスのメソッド読み出し
console.log(`子クラスのメソッド ${this.myField}`);
}