ホームページ >ウェブフロントエンド >jsチュートリアル >継承で遊ぶJavaScript(2)_JavaScriptスキル
言うまでもなく、親クラスのコンストラクタをサブクラスで呼び出すこのメソッドの方が分かりやすいです。さらに、この方法の最大の利点の 1 つは、構造継承によって多重継承を実現できることです。
のコードを確認してください。しかし、この方法にはあれこれの欠点もあります:
オブジェクト指向に詳しい人のために、次の C# コードを見てみましょう:
結果はどうなりましたか? b はもちろん A のインスタンスです:
ただし、構造継承を使用する上記の Javascript コードでこのテストを実行してみましょう:
しかし、結果は私たちが想像していたものとは異なりました:
実際、説明は簡単です。構造継承は、親クラスのコンストラクター メソッドを呼び出して親クラスの属性をコピーするだけで、他には何も行わないため、多くのマテリアルではこの継承メソッドを継承とは呼びません。
欠点を確認しながら、利点も覚えておいてください。多重継承をサポートしています。
C# の継承を見てみましょう。この継承には 2 つの最も典型的な違いがあることがわかります。C# は多重継承をサポートしていないこと、もう 1 つは上で述べた構造継承の欠点です。そこで、プロトタイプ継承と呼ばれる新しい継承方法が登場しました。
名前を見ると、プロトタイプ継承はプロトタイプの特性を利用して継承を実現していることが大まかに理解できます。これは、JavaScript で最も一般的な継承メソッドです。プロトタイプが理解できない場合は、私の別の記事「プロトタイプで遊ぶ - プロトタイプ」を参照してください。
まずコードを見てみましょう。ここでは、「The Return of the Javascript King」からコードの一部を借用しています。
テストに合格しました。 Point2D が親クラスのメソッドを継承していることがわかります。インスタンスをもう一度見てみましょう。
alert(ポイントのインスタンス);
成功!さて、プロトタイプの継承を分析しましょう:
プロトタイプ継承の利点については詳しく説明しません。構造がシンプルで理解しやすく、インスタンス化も可能です。しかし、彼の欠点も同様に明白です。前回の記事の動物、人物、少女の例をまだ覚えていますか?これを実現するために、プロトタイプの継承を使用します。
Java や C# などのオブジェクト指向言語は元々多重継承をサポートしておらず、多重継承はオブジェクト指向と矛盾すると考えられている
今日はここまでです。要約すると、プロトタイプ継承は構造継承のいくつかの問題を解決し、いくつかの新しい問題をもたらします。一般に、プロトタイプ継承は最も広く使用されている継承方法であり、JavaScript 文法で継承を実装する真の方法でもあります。