JavaScriptクラス
ES6としても知られるECMAScript2015は、JavaScriptクラスを導入しました。
JavaScriptクラスは、JavaScriptオブジェクトのテンプレートです。
JavaScriptクラス構文
キーワードclass
を使用してクラスを作成します。
常に:という名前のメソッドを追加しconstructor()
ます
構文
class ClassName {
constructor() { ... }
}
例
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
}
上記の例では、「Car」という名前のクラスを作成します。
このクラスには、「name」と「year」の2つの初期プロパティがあります。
JavaScriptクラスはオブジェクトではありません。
JavaScriptオブジェクトのテンプレートです。
クラスの使用
クラスがある場合は、そのクラスを使用してオブジェクトを作成できます。
例
let myCar1 = new Car("Ford", 2014);
let myCar2 = new Car("Audi", 2019);
上記の例では、Carクラスを使用して2つのCarオブジェクトを作成しています。
コンストラクターメソッドは、新しいオブジェクトが作成されるときに自動的に呼び出されます。
コンストラクターメソッド
コンストラクターメソッドは特別なメソッドです。
- 正確な名前は「コンストラクター」である必要があります
- 新しいオブジェクトが作成されると自動的に実行されます
- オブジェクトのプロパティを初期化するために使用されます
コンストラクターメソッドを定義しない場合、JavaScriptは空のコンストラクターメソッドを追加します。
クラスメソッド
クラスメソッドは、オブジェクトメソッドと同じ構文で作成されます。
キーワードclass
を使用してクラスを作成します。
常にconstructor()
メソッドを追加してください。
次に、任意の数のメソッドを追加します。
構文
class ClassName {
constructor() { ... }
method_1() { ... }
method_2() { ... }
method_3() { ... }
}
Carageを返す「age」という名前のClassメソッドを作成します。
例
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
let date = new Date();
return date.getFullYear() - this.year;
}
}
let myCar = new Car("Ford", 2014);
document.getElementById("demo").innerHTML =
"My car is " + myCar.age() + " years old.";
クラスメソッドにパラメータを送信できます。
例
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age(x) {
return x - this.year;
}
}
let date = new Date();
let year = date.getFullYear();
let myCar = new
Car("Ford", 2014);
document.getElementById("demo").innerHTML=
"My car is
" + myCar.age(year) + " years old.";
ブラウザのサポート
次の表は、JavaScriptのクラスを完全にサポートする最初のブラウザバージョンを定義しています。
Chrome 49 | Edge 12 | Firefox 45 | Safari 9 | Opera 36 |
Mar, 2016 | Jul, 2015 | Mar, 2016 | Oct, 2015 | Mar, 2016 |
「厳密に使用する」
クラスの構文は「厳密モード」で記述する必要があります。
「厳密モード」のルールに従わないと、エラーが発生します。
例
「厳密モード」では、変数を宣言せずに使用するとエラーが発生します。
class Car {
constructor(name, year) {
this.name = name;
this.year = year;
}
age() {
// date = new Date(); // This will not work
let date = new Date(); // This will work
return date.getFullYear() - this.year;
}
}
「厳密モード」の詳細については、JS厳密モードをご覧ください。