私は JavaScript を初めて使用するわけではありませんが、そのプロトタイプの継承について特定のことを理解することはできませんでした。
親と子の「クラス」(オブジェクトを作成する親と子の関数)があるとします。子を作成できるようにするには、まず次のことを行う必要があります
Child.prototype = new Parent();
ここで難点があります。プロトタイプを Child に割り当てることで、コード内で何も実行せず、そのプロパティを Children と共有するだけのもう 1 つのオブジェクト Parent を取得します。しかし、Parent のコンストラクターはまだ呼び出されています。たとえば、parent が特定の UI オブジェクトを表している場合、アプリケーションでは、実際には作成したくないオブジェクトがもう 1 つあります。もちろん、それは私たちのアプリケーションの状態に影響を与える可能性があり、影響を与えるでしょう.
これに対処する方法がわかりました: 特定の引数を Parent コンストラクターに渡して、作成しているオブジェクトがプロトタイプ用であり、一般的な使用用ではないことを示します。
RedButton.prototype = new Button(FOR_PROTO_ONLY);
次に、親コンストラクターで、表示可能なものを実行するかどうかを決定します。しかし、これは非常に醜い回避策です。
Java などのクラス指向言語では、継承は追加の関数の呼び出しを想定していないため、このような問題はまったくありません。プログラムでこのような醜い手法を使用せずに、見栄えの良いプロトタイプ階層を作成できるようにするにはどうすればよいでしょうか?