Wie gesagt, es ging um deine Aussage "man weiß genau" - das weiß man eben nicht, sondern es muss höllisch aufgepaßt werden, dass die Reihenfolge stimmt.
Wenn man weiß, was darin gemacht wird - es wird der Prototyp von Subclass gesetzt, indem ein Objekt erzeugt wird, welches an Superclass.prototype delegiert - dann ist vollkommen klar, warum der Aufruf an genau dieser Stelle und keiner anderen stehen kann.
Ich sehe da keine Unklarheiten. Ja, man muss aufpassen. Warum man aufpassen muss, erklärt sich aber dadurch, dass der Prototyp gesetzt (überschrieben) wird.
Dass diese simple Helferfunktion nicht universell ist, sollte klar sein.
Ich glaube aus genau dem Grund, hat Florian sein FW entwickelt.
Universell ist sein Framework insofern, dass es ein festes Schema vorgibt. Wie gesagt, das leisten andere Implementierungen auch. Y.extend leistet dasselbe wie meine primitive Helferfunktion und kann darüber hinaus noch viel mehr. Durch die Kompaktschreibweise ist das Problem der Reihenfolge aus der Welt.
Und warum dann nicht gleich eine super Funktion einbauen, wenn man schon dabei ist?
Ich habe es nicht gemacht, weil das dazu nötige Function-Wrapping sehr viel Komplexität hinzufügt und Performance kostet. Ich halte das in JavaScript für ein Problem, das man im Einzelfall geschickter lösen kann.
Und was ist mit Mehrfachvererbung?
Mehrfachvererbung ist auch auf die einfache Weise möglich.
Letztlich hast du aber Florian bestätigt.
Der Ansatz der Sprache kann Fehleranfällig sein, weil sie so dynamisch ist wie kaum eine andere Sprache. Da der prototype leicht überschrieben werden kann.
Ich sehe das nicht als Fehler von JavaScript. Ich bin nicht der Ansicht, dass die grundlegendsten Strukturen bereits »sicher« sein sollten. Das würde die Möglichkeiten arg begrenzen. Bei JavaScript ist es Aufgabe des Programmierers, sich selbst Strukturen zu schaffen, die ihm gewisse Regeln auferlegen. Das ist einfach nötig, vor allem wenn man mit vielen Entwickeln an umfangreichem Code arbeitet. Dazu gibt es bereits viele verschiedene Ansätze, je nachdem, welche Anforderungen man hat. Das bedeutet aber nicht, dass jeder Ansatz gleich stimmig ist.
Mathias