ホームページ > 記事 > ウェブフロントエンド > 継承で遊ぶ Javascript (1)_JavaScript スキル
JavaScript がオブジェクト指向言語なのか、オブジェクトをサポートする言語なのかについては、人それぞれの意見があると思います。たとえば、JavaScript の忠実なファンは、JavaScript がオブジェクト指向言語であると言うはずです。たとえば、「JavaScript 王の帰還」という本では、JavaScript はプロトタイプに基づいたオブジェクト指向であると説明されています。私の個人的な意見をお話しさせてください。オブジェクト指向、継承、ポリモーフィズム、カプセル化の 3 つの特徴 Javascript は Java、C#、その他のオブジェクト指向言語ほど高速に実装できませんが、それでも一定のサポートはあります。したがって、JavaScript がオブジェクト指向言語であると言うのは理にかなっていますが、継承の観点から見ると、一連の継承メソッドがありますが、それぞれの継承メソッドでは真のオブジェクト指向言語の能力を実現することはできません。それはオブジェクト指向であると言われています。要約すると、JavaScript についての私の理解は、これを単純化されたオブジェクト指向、または「疑似」オブジェクト指向と呼ぶことを好むということです (この疑似という言葉には軽蔑的な意味はありません)。
今日はオブジェクト指向の最初の機能である継承について話します。
継承とは何ですか?これについてはナンセンスな話はしたくありません。これは最も単純で典型的な継承の連鎖です。
C# などのオブジェクト指向言語では、それは簡単です。
では、JavaScript には実装を提供するクラスや継承がありません。どうすればよいでしょうか?
オブジェクト迷彩(構造継承方法)
オブジェクト迷彩とは?わかりやすくするために、これを構造継承と呼ぶこともあります。名前が示すように、コンストラクターを使用して継承を操作します。実際には、親クラスのコンストラクターが通常のメソッドとみなされ、サブクラスのコンストラクター内で実行されることを意味します。この場合、オブジェクトを構築する際、サブクラスのオブジェクトは当然そのメソッドを構築できます。親クラス!
引き続き上記の例を使用すると、コードは次のようになります:
結果は次のとおりです:
a.
b.
c.
d.
e
f.
テストは成功しました!
このコードの要点をまとめて、親クラスの指定、親クラスのオブジェクトの宣言、そして一時変数の削除をしてみましょう。少なくとも私はそう思います。削除を忘れると、親クラスが変更されるリスクを負わなければなりません。これを改善するために、call と apply を使用します。
次にコードを見てみましょう。引き続き上記の例です (誰でも理解しやすくするために、要件が変更されており、動物には名前が付いています)。
初心者の場合、次の 2 つのコードに少し混乱するかもしれません。call とは何か、apply とは何か?さて、継承の遊びのトピックに補足シリーズを追加しました。これが理解できない場合は、私の記事「メソッドの遊び: call と apply」を読んでください。
オブジェクト偽装は継承を実現するための単なる手段です。次の記事では、引き続き他の継承方法といくつかの継承方法の長所と短所について書いていきます。