概要
javascriptのクラスはプロトタイプオブジェクトからプロパティを継承するオブジェクトと言えます。
プロトタイプオブジェクトはクラスの原型という位置づけで考えられ、
このプロトタイプオブジェクトを生成することはクラスを定義することと同じような意味になります。
一般的には新しいオブジェクトを生成する場合、インスタンスを初期化します。
次にシンプルなクラスを定義して、実際にコードを書いてみます。
//クラスとなるメソッドを定義 function testclass() { //プロトタイプオブジェクト(addmethod)を継承するオブジェクトを生成する let tc = testclass.addmethod; //生成したオブジェクトに対して、プロパティを定義 tc.test1 = 1; tc.test2 = 50; //オブジェクトを返す return tc; } //上記のメソッドに新たにメソッドを定義(付与)する testclass.addmethod = { //1つめのメソッドを追加 addfunc1: function(a) { //引数aに元のクラスのプロパティtest1の値を加算して返す return a + this.test1; }, //2つめのメソッドを追加 addfunc2: function(b) { //引数aに元のクラスのプロパティtest2の値を加算して返す return b + this.test2; } }; //testclassメソッドをもとにインスタンス「ti」を生成する let ti = testclass(); //インスタンス console.log(ti.addfunc1(2)); console.log(ti.addfunc2(3));
上記の出力結果は
3 53
になります。
上記のコードの動きについてですが、まずクラス「testclass」を定義し、その定義したクラスに対してプロトタイプオブジェクトを継承し、
継承したプロトタイプオブジェクト内のメソッドaddfunc1やaddfunc2を呼び出しています。
このように書いて検証してみることで、プロトタイプオブジェクトの動きが見てわかるようになります。