Nedarvning, super og hvornår De bør foretrække komposition
Udvid en baseklasse med extends, kald super i constructors, overskriv metoder sikkert, og lær, hvornår enkel komposition er bedre.
Nedarvning, super og hvornår De bør foretrække komposition er en gratis JavaScript Academy-lektion på CoddyKit. Dette er lektion 2 af 3. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i JavaScript Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. JavaScript Academy-kurset indeholder 3 lektioner i alt.
Det store billede
Mål: Brug grundlæggende nedarvning uden forvirring.
- extends opretter en underklasse
- super(...) kalder superklassens konstruktør
- Tilsidesæt en metode; kald eventuelt super.method()
- Hvis det ikke er en “is-a”-relation, så foretræk komposition

extends + super
Opret en underklasse med extends; kald super(name) for at køre superklassens konstruktør og gøre this klar.
// Base class with a small field and method
class Animal {
constructor(name) {
this.name = name;
}
info() {
return "Animal:" + this.name;
}
}
// Child class extends the base and calls super(...)
class Dog extends Animal {
constructor(name, breed) {
// must call super() before using this
super(name);
this.breed = breed;
}
speak() {
return "woof";
}
}
const d = new Dog("Milo", "Beagle");
console.log(d.info(), d.speak());

Tilsidesættelse af metode
Når du tilsidesætter en metode, kan du kalde super.method() for at genbruge grundlogikken og derefter tilføje din ændring.
// Override a method; keep parent behavior with super.method()
class Button {
click() {
return "base-click";
}
}
class IconButton extends Button {
click() {
// call parent behavior, then add something
const base = super.click();
return base + "+icon";
}
}
const b = new IconButton();
console.log(b.click()); // "base-click+icon"

Foretræk komposition ved has-a
Hvis relationen er has-a (bruger en hjælper), så foretræk komposition frem for nedarvning for at holde klasserne enkle.
// Composition: use a helper object instead of extending
class Logger {
log(msg) {
console.log("[log]", msg);
}
}
class Player {
constructor(name, logger) {
this.name = name;
this.logger = logger; // has-a logger
}
score(points) {
this.logger.log(this.name + " +" + points);
}
}
const logger = new Logger();
const p = new Player("Ayla", logger);
p.score(5);

is-a og has-a
Nedarvning modellerer en is-a-relation: en Dog er en Animal. Komposition bruges til hjælpere med relationen has-a.
// Use instanceof for a quick is-a check
console.log("Dog is Animal?", d instanceof Animal);
console.log("Player is Animal?", p instanceof Animal);

Vaner for begyndere
Tips:
- Hold hierarkierne flade for begyndere.
- Kald super(...) først i underklassens konstruktører.
- Tilsidesæt kun det nødvendige; genbrug med super.method().
- Foretræk komposition til hjælpefunktioner og tværgående funktionalitet.

Quiz om super(...)
Hurtigt tjek: super i en underklassekonstruktør.

Opsummering
Opsummering: Brug extends til ægte is-a-relationer, kald super(...) tidligt, tilsidesæt med omtanke (kald super.method(), når det er nyttigt), og foretræk komposition til hjælpere.

Lær JavaScript med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 59
- Lektioner
- 200
Ofte stillede spørgsmål
Er lektionen “Nedarvning, super og hvornår De bør foretrække komposition” gratis?
Ja — alle 3 lektioner i læringssporet JavaScript Academy, inklusive “Nedarvning, super og hvornår De bør foretrække komposition”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. JavaScript Academy-kurset indeholder 3 lektioner i alt.
Hvad lærer jeg i “Nedarvning, super og hvornår De bør foretrække komposition”?
Udvid en baseklasse med extends, kald super i constructors, overskriv metoder sikkert, og lær, hvornår enkel komposition er bedre. Du øver dig i JavaScript Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på JavaScript Academy?
Der kræves ingen tidligere erfaring. JavaScript Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 3.
Hvor lang tid tager lektionen “Nedarvning, super og hvornår De bør foretrække komposition”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne JavaScript Academy-lektion?
Ja. Alle JavaScript Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Class fields, private # fields og statiske medlemmer
- Nedarvning, super og hvornår De bør foretrække komposition
- Mixins (smagsprøve) — enkel genbrug uden dybe hierarkier