• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Frage OOP: Konstruktor-Funktion + Prototyp (Vererbung)

mehmet_b_90

Neues Mitglied
Hallo zusammen,

bin gerade dabei mich in JavaScript einzuarbeiten. Momentan geht es um die OOP-Programmierung inkl. Vererbung in JavaScript. Dabei gibt es ja mehrere Alternativen. Unter anderen die oben genannte Konstruktor-Funktionen + Prototyp.

Laut Lehrbuch ist folgender Code aufgeschrieben, der aber bei mir nicht laufen möchte:

Javascript:
"use strict";

function Fahrzeug(farbe, leistung, preis) {
    this.farbe = farbe;
    this.leistung = leistung;
    this.preis = preis;
}

function PKW(farbe, leistung, preis, typ) {
    this.base = Fahrzeug;
    this.base(farbe, leistung, preis);
  
    this.typ = typ;
}

PKW.prototype = new Fahrzeug;

let audi = new PKW("Schwarz", 225, 25000, "Limousine");

for (let i in audi) {
    document.write(i + ": " + PKW[i] + "<br>");
}

Das Ergebnis dabei ist immer die folgende:

HTML:
farbe: undefined
leistung: undefined
preis: undefined
typ: undefined

Was ist da falsch?

PS: Habe auch gelesen, dass jede Funktion in JavaScript automatisch auch ein Objekt ist. Ist das richtig?
 
Werbung:
Guck mal, ob das hilft
Code:
for(var key in audi)
{
   if (typeof(audi[key]) == "function")
      continue;
document.write(key+' = '+audi[key]+'<br>');
}

Also nur die Schleife tauschen.
Link zur Lösung


Ohne die typeof Abfrage ist die erste abfrage alles in einen , vielleicht kennt, dass einer auch anders wie es ohne diese Schleife geht
 
Zuletzt bearbeitet:
Danke! Ich habe den Fehler gefunden:

Falsch:
Javascript:
document.write(i + ": " + PKW[i] + "<br>");

Richtig:
Javascript:
document.write(i + ": " + audi[i] + "<br>");

Ich schau 50 mal darüber und sehe es erst nach deinem Beitrag. Oh man. :D
 
Werbung:
Das ist schön wenn es jetzt bei dir klappt.
Ich verstehe aber eins noch nicht so richtig in den Thema.
Wenn ich jetzt deinen Code mit dieser Schleife nutze
Javascript:
for(var key in audi){
   if (typeof(audi[key]) == "function")
      continue;
document.write(key+' = '+audi[key]+'<br>');
}
Bekomme ich dein erwünschtes Ergebniss
farbe = Schwarz leistung = 225 preis = 25000 typ = Limousine
Lasse ich die typeof Abfrage weg
Javascript:
for(var key in audi){
        document.write(key+' = '+audi[key]+'<br>');
}
kommt dieses Ergebniss raus
base = function Fahrzeug(farbe, leistung, preis) { this.farbe = farbe; this.leistung = leistung; this.preis = preis; } farbe = Schwarz leistung = 225 preis = 25000 typ = Limousine

Das ist so nee sache die ich noch nicht ganz verstehe.
Hat da einer nee erklärung für oder ein Link wo das erklärt wird `?
Ich konnte da noch nix finden was ich ( IQ unter 30 ) auch verstehe
 
Wird wahrscheinlich am folgende Anweisung, in Zeile 2, liegen:

Javascript:
function PKW(farbe, leistung, preis, typ) {
    this.base = Fahrzeug;
    this.base(farbe, leistung, preis);
 
    this.typ = typ;
}
 
Zurück
Oben