Struppi: Was läuft schief im JavaScript-Land: Frameworks, die Wurzel...

Beitrag lesen

vielen Dank für Deinen Input. Ich muss gestehen, ich verstehe ihn nur zur Hälfte. Dein JavaScript abstrahiert wesentlich stärker (Stichwort "bind"-Funktion), als es das meine tut. Für einen Anfänger (und da zähle ich mich dazu!) ist Dein Ansatz sicherlich noch viel schwerer nachzuvollziehen, als der meine.

Hier treffen Welten aufeinander.

Das Abstrahieren (was mir persönlich manchmal sehr sehr schwer fällt) ist eben das A&O in der Objekt orientierten Programmierung. Da du da noch am Anfang stehst, hast du dein Skript quasi "von vorn aufgezäumt" der OO Programmierer macht es i.d.R eher umgekehrt. Erst steht der Entwurf, dann die Muster und dann die Objekte, dann der Code - ein langwieriger und langweiliger Prozess (zumindest für mich), der aber zu einem eleganten Programmablauf führt.

Du erklärst wie du von dem Einen auf das Nächste kommt, was eventuell für Anfänger einfacher ist. Im gegensatz dazu ist Christophs Skript elegant auf das Ergebnis ausgerichtet. Der Anfänger wird aber schwer erkennen was wann wo passiert. Aber das tolle an OOP ist, der Anwender muss das auch gar nicht Wissen, er muss nur wissen, was er an dem Objekt anfassen darf oder soll und dann muss das passieren, was ihm versprochen wird.

Über die ganze Thematik gibt es Bücher, die dicker sind als die Bibel und darin geht es dann nur um die Theorie. Das zeigt wie komplex das Thema ist und wie schierig es sinnvoll zu erklären, dass es jeder versteht. DEN Weg gibt es vermutlich nicht und daher zeigen beide Entwürfe einfach verschiedene Entwicklungstufen. Du darfst dich halt nicht zu sehr auf die lineare Denkweise konzentrieren und müßtest versuchen etwas zu abstrahieren und Christoph müßte versuchen, wenn er das Skript als Erklärungsgrundlage benutzen möchte, den abstrakten Ablauf linear zu erklären, damit auch Anfänger damit zu recht kommen.

Wenn jeder seinen Weg weiter verfolgt, ist das gut und für die Artikelreihe bei selfhtml sicher ein Gewinn.

...Bei Deinem Ansatz bin ich jetzt noch mehr verunsichert, ob Du nun eine Fabrik-Methode benutzt, oder doch einen Konstruktor... STRUPPIIII, wo bist Du, wenn ich Dich brauche?

Schlafen *g*

Im Prinzip wäre es ein Fabrikmethode, aber dazu müsste es ein konkretes Objekt zurückgeben, er gibt aber den Konstruktor zurück und daher kann sie, zumindest in JS, als Konstruktor verwendet werden. Zumal die Funktion gar nicht aufgerufen werden muss, sondern automatisch aufgerufen wird. Was eine Besonderheit in JS ist (oder zumindest von Skriptsprachen ist), es ist eine anonyme Funktion die sich selbst sofort aufruft.

Es gibt noch mehr so Sache in JS. Ich bevorzuge z.b. für meine Framework ansätze sowas:

var meinFramework = new function() {  
/* ... */  
};  

Also einen anonymen Konstruktor, der ein Singleton darstellt. Der grosse Vorteil gegenüber deiner Methode ist, dass du private Variabeln und Funktion deklarieren kannst und in dem Kontrukt immer über this (oder einem Platzhalter) auf das Objekt zugreifen, du musst als nie 'meinFramework' benutzen.

Aber du merkst, bei der Thematik kommt man schnell vom hundersten auf's tausende usw.

Struppi.