JavaScriptの原型継承は古典的継承とどのように異なるのか?
4289 ワード
オブジェクト指向プログラミング
古典的でプロトタイプの継承は、オブジェクト指向プログラミングパラダイムです.オブジェクト指向プログラミングのオブジェクトは、実体の特性をカプセル化する抽象化です.これは抽象化として知られています.
複数のレベルの抽象化を扱うとき、各レベルはより一般的であるかより具体的です.より具体的な抽象化のより一般的な抽象化は汎化と呼ばれます.
前述のように、オブジェクトは実体の抽象化です.我々は、これらのオブジェクトの一般化を作成するためにどちらのクラス(古典的な継承)またはプロトタイプ(プロトタイプの継承)を使用します.一般化は継承によって生成されます.
例を考えます.
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のために我々について来てください、反応して、パイソンスニペット!👨💻Reference
この問題について(JavaScriptの原型継承は古典的継承とどのように異なるのか?), 我々は、より多くの情報をここで見つけました https://dev.to/chalarangelo/how-does-javascripts-prototypal-inheritance-differ-from-classical-inheritance-oiiテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol