#100DaysOfCode の 6 日目!


今日の進捗🏍



継承、DRY (Don't Repeat Yourself)、スーパータイプ (親) に取り組みました.継承と DRY の利点は、コードを書き直さなくても済むようになることと、アプリケーションのコードをあまり書かないことにあります.このようにして、対処する問題 (バグ) が少なくなり、よりクリーンなコードを記述できます.コードが成長し続けるにつれて、コードが非常に複雑になる可能性があることは容易に想像できます.したがって、それを縮小する方法を見つける方がよいでしょう.

私が学んだこと



オブジェクト、プロトタイプ、継承についてさらに学びました.私が取り組んだ例は、継承がどのように機能し、その利点を説明してくれることを願っています.

では、オブジェクト指向プログラミングの inheritance は何ですか?継承により、あるクラスが別のクラスの属性とメソッドを継承 (または取得) できます.プロパティとメソッドが継承されるクラスは、Parent クラスと呼ばれます.

以下の例は、2 つのオブジェクト コンストラクターを示しており、どちらにも drive メソッドという共通点があります.

function Car(){}

Car.prototype = {
   constructor: Car,
   drive: () => {
     console.log("Vroom vroom")
   }
}

function Motorcycle() {}

Motorcycle.prototype = {
   constructor: Motorcycle,
   drive: () => {
     console.log("Vroom vroom")
   }
}


両方の車両を駆動して Vroom vroom という音を出すことができることがわかっているので、DRY 原則を使用してコードを簡素化および削減し、Vehicle というスーパータイプ (または親) を作成し、Car と Motorcycle の両方から drive メソッドを削除して配置することができます.車両でそれ.

それでは、作成してみましょう.

//child object
function Car(){}

Car.prototype = {
   constructor: Car,
   drive: () => {
     console.log("Vroom vroom")
   }
}

//child object
function Motorcycle() {}

Motorcycle.prototype = {
   constructor: Motorcycle,
   drive: () => {
     console.log("Vroom vroom")
   }
}

// parent object
function Vehicle(){

}
Vehicle.prototype = {
   constructor: Vehicle,
   drive: () => {
     console.log("Vroom vroom")
   }  
}


継承

スーパータイプを作成し、DRY 原則を使用して、継承を適用​​したいと考えています.つまり、スーパータイプ (この場合は Vehicle オブジェクト) から継承する必要があります.メソッドを使用するだけで、 Animal の新しいインスタンスを作成できますObject.create(obj).これにより、新しいオブジェクトが作成され、新しいオブジェクトのプロトタイプとして obj が設定されます.

これがその外観です.

Car.prototype = Object.create(Vehicle.prototype)

let honda = new Car();

console.log(honda.drive());
//output: "Vroom vroom"



サブタイプ (または子) Car は、Vehicle のインスタンスになりました.新しい Car オブジェクトを作成し、変数 honda に格納する場合. hondaVehicle のすべてのプロパティを継承するようになったため、 drive() メソッドを実行できます.