7. marts 2026

Nedarvning af klasser

Nedarvning af klasser er en måde for en klasse at udvide en anden klasse.

Så vi kan skabe ny funktionalitet baseret på en eksisterende klasse.

Nøgleordet “extends”

Lad os sige at vi har klassen Animal:

class Animal {
  constructor(name) {
    this.speed = 0;
    this.name = name;
  }
  run(speed) {
    this.speed = speed;
    alert(`${this.name} løber ${this.speed} km/t.`);
  }
  stop() {
    this.speed = 0;
    alert(`${this.name} står stille.`);
  }
}

let animal = new Animal("Mit dyr");

Sådan her kan vi vise animal objekt og Animal klasse graphisk:

…nu vil vi gerne oprette en anden class Rabbit.

Da kaniner er dyr bør klassen Rabbit basere sig på Animal. På denne måde har kaninen adgang til metoderne fra Animal ogkan gøre det samme som “generiske” dyr.

Syntaksen for at udvide (extend) en anden klasse er: class Child extends Parent.

Lad os oprette class Rabbit som nedarver fra Animal:

class Rabbit extends Animal {
  hide() {
    alert(`${this.name} skjuler sig!`);
  }
}

let rabbit = new Rabbit("Hvid kanin");

rabbit.run(5); // Hvid kanin løber 5 km/t.
rabbit.hide(); // Hvid kanin skjuler sig!

Et objekt af klassen Rabbit har adgang til både Rabbit metoder, såsom rabbit.hide(), og også til Animal metoder, såsom rabbit.run().

Internt bruger nøgleordet extends den gode gamle prototype mekanik. Det sætter Rabbit.prototype.[[Prototype]] til Animal.prototype. Så, hvis en metode ikke findes i Rabbit.prototype, tager JavaScript den fra Animal.prototype.

For eksempel, for at finde rabbit.run metode, tager motoren den (fra bunden til toppen på billedet):

  1. rabbit objektet (har ingen run).
  2. Dens prototype, som er Rabbit.prototype (har hide, men ikke run).
  3. Dens prototype, som (på grund af extends) er