K2.prototype.method4 = function () { alert('method4'); };
inheritPseudoClass(K1, K2);[/code]Allerdings weiß man hier genau, was getan wird.
Du hast hiermit ein schönes Beispiel geliefert warum das eben nicht ist. Durch die Reihenfolge in den Aufrufen überschriebst du die Funktion method4() und mancher weiß ertsmal üpberhaupt nicht, warum das so ist
Bei dem Beispiel war ich schlicht unaufmerksam, ...
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. Und selbst das kann u.U. variieren, je nach Ansatz der Helferfunktion. Es muss als immer völig klar sein, welche Helperfunktion hier verwendet wird und jeder muss dann auch immer Wissen, wie diese funktioniert.
Dass diese simple Helferfunktion nicht universell ist, sollte klar sein.
Ich glaube aus genau dem Grund, hat Florian sein FW entwickelt.
Prinzipiell ließe sie sich auch so schreiben, dass sie diesen Anwendungsfall abdecken könnte (bestehende Member des Prototyps an den neuen kopieren).
Und warum dann nicht gleich eine super Funktion einbauen, wenn man schon dabei ist?
Und was ist mit Mehrfachvererbung?
Wer sie einsetzt, sollte verstehen, was sie macht.
Ja, das dürfte bei fast allen der Fall sein, es geht aber um das Grundkonzept der Sprache.
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.
Einfach Lösungen können Fehleranfällig sein, wenn man unaufmerksam ist oder das genaue Konzept nicht kennt.
Und komplexe Lösungen sind oftmals verdammt langsam.
Struppi.