JavaScriptの原型継承は古典的継承とどのように異なるのか?


オブジェクト指向プログラミング


古典的でプロトタイプの継承は、オブジェクト指向プログラミングパラダイムです.オブジェクト指向プログラミングのオブジェクトは、実体の特性をカプセル化する抽象化です.これは抽象化として知られています.
複数のレベルの抽象化を扱うとき、各レベルはより一般的であるかより具体的です.より具体的な抽象化のより一般的な抽象化は汎化と呼ばれます.
前述のように、オブジェクトは実体の抽象化です.我々は、これらのオブジェクトの一般化を作成するためにどちらのクラス(古典的な継承)またはプロトタイプ(プロトタイプの継承)を使用します.一般化は継承によって生成されます.
例を考えます.
  • 我々は2つのペットを表す2つのオブジェクトがあります:マックス犬とクレア猫.彼らを呼びましょうmax and claire それぞれ.
  • すべての犬に共通の特徴がある.したがって、抽象化を作成することができます.Dog , どの共通の特性をカプセル化するか.私たちは、遺伝からの特徴を通過するためにDog to max .
  • 同じことが猫に適用され、抽象化を可能にします.Cat . 同様にclaire を特徴とするCat .
  • 猫と犬は共通の特徴を共有する.一般化を行うことができます.Animal , これらの特性をカプセル化する.Dog and Cat これらの共通の特徴をAnimal .
  • 古典的遺産


    古典的なオブジェクト指向プログラミングでは、オブジェクトとクラスの2種類の抽象化があります.オブジェクトはオブジェクトの抽象化です、一方、クラスはオブジェクトかもう一つのクラスの抽象化です.
    古典的な継承を使用して前の例をモデル化する場合は、次のようになります.
    class Animal { }
    
    class Dog extends Animal { }
    class Cat extends Animal { }
    
    const max = new Dog();
    max.name = 'Max';
    
    const claire = new Cat();
    claire.name = 'Claire';
    

    原型継承


    プロトタイプオブジェクト指向プログラミングでは、抽象化の1つのタイプしかありません.オブジェクトは、実体または他のオブジェクトの抽象化のどちらかです.その場合、それらはプロトタイプと呼ばれています.したがって、プロトタイプは一般化です.
    オブジェクトは、新しく作成されたオブジェクトのプロトタイプになります.
    プロトタイプの継承を使用して前の例をモデル化する場合、次のようになります.
    const animal = {};
    
    const dog = Object.create(animal);
    const cat = Object.create(animal);
    
    const max = Object.create(dog);
    max.name = 'Max';
    
    const claire = Object.create(cat);
    claire.name = 'Claire';
    
    あなたは短い、高品質のコードのスニペットや記事が好きですか?だから私たち!訪問30 seconds of code これのようなより多くの記事のために、または、毎日のJavaScriptのために我々について来てください、反応して、パイソンスニペット!👨‍💻