In der Mitte des Mozilla documentation page es (ohne klar genug Erklärung) schaltet Beispiele ausWarum wird new Parent() oft verwendet, um Prototypen von Kindern anstelle von Object.create (Parent.prototype) zu initialisieren?
WorkerBee.prototype = Object.create(Employee.prototype);
zu
WorkerBee.prototype = new Employee;
Zweiter Form new Employee
werden Prototyp WorkBee mit Eigenschaften initialisieren, die in Instanzen sollen nur existieren von WorkBee.
Warum wird das zweite Formular in so vielen Beispielen der JavaScript-Vererbung verwendet? Ist es nicht unerwünscht, vererbten Eigenschaften gegenüber eigenen Eigenschaften einen anderen Status zuzuweisen?
Der Status des Namens der Employee-Eigenschaft in WorkBee unterscheidet sich von den Eigenschaftsprojekten, da der Name in WorkBee.prototype.name definiert ist, während die Projekte in der WorkBee-Instanz definiert sind.
Im Allgemeinen, warum sollte jemand jemals Konstruktor der nicht abstrakten Klasse X verwenden, um Prototyp der abgeleiteten Klasse Y in JavaScript zu initialisieren?
Meiner Meinung nach sollten beide Konstruktoren nur verwendet werden, um Instanzen von X und Y zu initialisieren, und wenn Y von X abgeleitet wird, sollte Konstruktor X Instanzen von Y initialisieren, nicht Prototyp von Y. Aber wenn X abstrakt ist, was bedeutet, dass wir keine Instanzen von X erwarten, nur dann können wir X-Konstruktor als einen Platz verwenden, um die Initialisierung von Prototypen abgeleiteter Klassen zu platzieren.
Der verlinkte Artikel tatsächlich [hat mehr Probleme] (https://bugzilla.mozilla.org/show_bug.cgi?id=1201380#c9) als nur das – Bergi
Dieser Artikel sagt "Es ist 2015: das sollte nicht Teil sein MDN. ", Kann ich nur hinzufügen Es ist Oktober 2016: das sollte nicht Teil von MDN sein. – alpav
Es ist ein Wiki - bitte helfen :-) – Bergi