検索:投稿記事codeJavaScriptでclassを継承するJavaScriptでclassをシュミレートする方法JavaScriptはprototypeベースのオブジェクト指向で、classという機能は現時点ではありません。prototypeとは、「原型」という意味です。JavaScriptではあるオブジェクトが他のオブジェクトの原型となることで、オブジェクトの拡張・継承がなされます。一つの具体的な手順としては、オブジェクトのコンストラクタとして関数を利用し、その関数のprototypeプロパティに原型オブジェクトを設定します。このような手順を取る場合には、関数がオブジェクトを作ったり、繋げたりする機能を果たすということになります。関数のprototypeプロパティには、どのようなオブジェクトでも設定することができますが、「原型」としてのみ利用するオブジェクトを設定することで、関数をclassに見立たてたclassベースのオブジェクト指向をシュミレートすることができます。classに見立てた関数に、毎回その継承手順を行うのですが、これは継承設定の柔軟性の確保にはなりますが、多少手間がかかります。そこで、基本的な継承手順を自動化した関数を作ります。継承手順には、大きくプロトタイプチェーン、コンストラクタチェーン、メソッドチェーンがありますが、プロトタイプチェーン関数だけでも作っておくと作業効率が上がります。以下に、私が作った継承関数を紹介します。プロトタイプチェーンだけではなく、コンストラクタチェーン、メソッドチェーンも楽に作業できるように工夫しました。(メソッドチェーンは、親クラスへの参照があるというだけですが、、。子class説明:JavaScriptで、classに見立てた関数の継承作業を自動化する関数です。引数に親class、第二引数に子classのコンストラクタを取り、返値として子classを返します。子classのプロパティ.parentCtorに、親classのコンストラクタが定義されます。これをコンストラクタチェーンに使ってください。子classのプロパティ.parentに、親classへの参照が定義されます。これをメソッドチェーンに使ってください。特色JavaScriptでは、関数がコンストラクタになるので、その関数をclassに見立てると解説しましたが、このclass継承関数inheritでは、classに見立てる関数とは別に、それとセットとなるコンストラクタ関数を用意しました。これによりclass継承作業の柔軟性を確保します。コスト子class生成時のinherit実行コールオブジェクト。子classとセットになるコンストラクタ。上記コールオブジェクトに格納される。inherit(class1,function(test1,test3){//コンストラクタチェーン。引数test2をバインド。//子classを定義する。//コンストラクタチェーンをchildにセットする。//コンストラクタを実行する。//実行済みの親コンストラクタを廃棄する。//プロトタイプチェーン。//プロトタイプのみ継承するため。//メソッドチェーンのため、親classへの参照を格納。child;};動作確認用コード:以下のコードは、jsdo.itで試行できます。Utility.inherit(class1,function(test1,test3){//コンストラクタチェーン。引数test2をバインド。Utility.inherit(class2,function(test1){//コンストラクタチェーン。引数test3をバインド。