概要
今回は3.JavaScriptの文法と構文について、の
クラスについて確認していきます。
他言語では一般的なクラスですが、JavaScriptはプロトタイプベースなので、ES6からクラスという概念が使用できます。
※無料版なので、誤っている情報もあると思いますが、アウトプットできれば良しとします。
クラス
JavaScriptにおけるクラスはどういったことができて、何に注意すればいいかを聞いてみます。
【質問】
JavaScriptの文法と構文について、クラスの概要、記述方法や注意点を教えてください。
【回答】
JavaScriptのクラスは、オブジェクト指向プログラミングの機能の一つで、複数の関数や変数をまとめて、ひとつの「クラス」という単位で扱うことができます。
JavaScriptのクラスは、ES6(ECMAScript2015)から導入されました。
クラスの基本的な構文
以下は、JavaScriptでクラスを定義する基本的な構文です。
class MyClass {
constructor(prop1, prop2) {
this.prop1 = prop1;
this.prop2 = prop2;
}
method1() {
// メソッドの処理
}
method2() {
// メソッドの処理
}
}
classキーワードでクラスを定義します。
constructorメソッドは、クラスのインスタンスが作られるときに実行されるメソッドで、クラスのプロパティを初期化するために使用されます。
method1やmethod2は、クラスのメソッドです。
クラスの注意点
クラス内で定義するメソッドには、アロー関数を使わずに通常の関数を使用する必要があります。
これは、アロー関数では自身を参照するためのthisが定義されず、予期しない動作をすることがあるためです。
クラスのプロパティには、アンダースコア(_)を前置する命名規則がありますが、実際にはプライベートプロパティを定義するためのものではありません。
代わりに、ES2022からはプライベートフィールドが導入されており、#を前置することで定義することができます。
クラスの継承
JavaScriptでは、クラスの継承もサポートされています。
以下は、クラスの継承を実現する構文の例です。
class MySubClass extends MyClass {
constructor(prop1, prop2, prop3) {
super(prop1, prop2);
this.prop3 = prop3;
}
method3() {
// メソッドの処理
}
}
extendsキーワードを使って、親クラスを指定します。
superキーワードを使って、親クラスのコンストラクタを呼び出します。
子クラスで新たに定義するメソッドやプロパティがある場合は、親クラスには影響を与えずに子クラスに追加することができます。
extends・superやプライベート化など、他言語とも変わりなく使用できるようです。
ただ、バージョンによって使用できないことを考えると、現場によっては使われていない場合もあるので、注意が必要です。