Ich glaube, ich verstehe prototypische Vererbung in JS aber habe Probleme beim Schreiben von Code, um eine bestimmte Idee zu demonstrieren, die ich habe. Betrachten Sie dieses extrem einfaches Szenario, in dem Manager-Objekte aus Mitarbeitern Objekten ableiten:Prototypische Vererbung ohne Prototyp?
function Employee()
{
this.name = "Axel";
this.dept = "R&D";
}
function Manager()
{
Employee.call(this);
this.reports = ["Report 1", "Report 2", "Report 3"];
}
console.log(new Manager());
Die Ausgabe lautet:
Manager {name: "Axel", dept: "R&D", reports: Array[3]}
Seltsamerweise scheint es mir, dass wir demonstrieren prototypische Vererbung gelungen. Aber die Fakten, die wir nicht verwendeten prototype
überall stört mich. Sicherlich ist der obige Code nicht der richtige Weg?
Kann jemand ein Beispiel geben, das zeigt, dass der obige Ansatz fehlschlägt?
(By the way, kommt das Beispiel von der offiziellen Mozilla docs, abzüglich die Einstellung von Prototypen: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Details_of_the_Object_Model)
Es ist nichts falsch mit dem obigen Ansatz. In diesem Fall modifizieren Sie nur ein * einzelnes Objekt *, während Sie mit dem Prototyp * alle Objekte * mit dem gleichen Prototyp modifizieren können. – meskobalazs
@meskobalazs Ich fürchte, mein klassisch trainierter Geist folgt nicht. Wenn ich eine Menge 'neuer Manager()' schreibe, würde ich nicht alle drei Eigenschaften (Name, Abteilung und Berichte) erhalten? Daher scheint es, dass alle Objekte, die weiter unten liegen, modifiziert werden. – dotslash
Sie verwenden hier keine Prototypen oder prototypische Vererbung. Stattdessen legen Sie Eigenschaften direkt für jedes einzelne Objekt fest. –