[JavaScript]コンストラクタってなに?クラス?書き方もあわせて紹介
JavaScriptのコンストラクタについて、シンプルな事例を交えて書き方を紹介します。
あわせて、他プログラミング経験者から違和感を感じるコンストラタク=クラス?についても触れます。
JavaScriptのコンストラクタってクラス?
他のプログラミング経験者からすると、JavaScriptのコンストラクタはクラスのようにも見えますよね。
プロパティもあるし、メソッドも書けるし、コンストラクタをベースにインスタンスを生成するし。
でも、JavaScriptにはクラスが存在しません。(でした)
ES2015(ES6)からJavaScriptにはクラス構文が導入されましたが、それ以前はクラスっぽいものはコンストラクタで記述していました。
JavaScriptのクラスは別の機会に紹介するとして、この記事ではJavaScriptのコンストラクタに焦点を当てます。
とりあえず、結論として
- コンストラクタはクラスっぽいけど、クラスじゃない
- JavaScriptにクラスはなかったけど、ES6から使えるようになったよ
この2点だけ抑えておいてください。
コンストラクタを書いてみる
前置きが長くなってしまいましたが、コンストラクタのシンプルな例を書いてみます。
- 名前と年齢を計算するメソッドを持つ
- 生まれた年から現在の年齢を計算するメソッドを持つ
名前はPersonにでもしましょうか。
コンストラクタを書く時は、function コンストラクタ名で書きます。
function Person(name) { this.name = name; this.ageCal = function(birthYear) { console.log(2019 - birthYear) }; } var Mike = new Person('Mike'); console.log(Mike.name) Mike.ageCal(1990)
上記コードではPersonというコンストラクタを書き、その後new Personでインスタンを生成しています。
プロパティはthis.プロパティ名で値を代入させています。