V. 8.7 (27.03.2012)

Infos

Download

Theorie OOP mit JavaScript

Schnellsuche

OOP mit JavaScript

1. Vorwort

Ein Hinweis

Da dachte ich, ich hätte nun JavaScript endgültig verstanden, aber Pustekuchen! Ein paar Dinge musste ich hier noch mal völlig überarbeiten, da ich da einen ziemlichen Tinnef von mir gegeben habe. Das bezieht sich besonders auf Closures, die ich ehrlich gesagt bis heute nicht so ganz verstanden habe. Denn ich verlasse mich immer wieder auf Angaben aus dem Internet. Oder genauer gesagt, oft genug muss ich das machen. Leider gibt es da einen ziemlichen Schrott zu diesem Thema. Hinzu kommt noch, dass sich selbst die Profis nicht immer ganz einig sind. Ist zumindest mein Eindruck. Und darum habe ich mir einzelne Punkte noch mal vorgenommen und überarbeitet. Wer immer noch Fehler findet, soll mir eine Mail schicken.

[PS: Dank an Arno, der mir wieder sehr geholfen hat.]

2. Und noch ein wichtiger Hinweis

Bezeichnungen

Nachdem ich an der einen oder anderen Stelle im Internet ziemlich laute Kritik an diesem Tutorial mitbekommen habe, muss ich vorerst etwas klarstellen. Ich arbeite hier mit Ausdrücken aus anderen Sprachen wie zum Beispiel PHP oder Java.

Ich rede in diesem Tutorial also des Öfteren von Methoden. Früher habe ich sie als Funktionen bezeichnet, aber das hat bei vielen für Verwirrung gesorgt, weil sie an die sonst üblichen Bezeichnungen gewöhnt sind. Darum verwende ich auch weiterhin diesen Begriff, auch wenn es in JavaScript genau genommen keine Methoden gibt. Die heißen wohl Funktionsobjekte, aber so sicher bin ich mir da nicht. Dasselbe gilt natürlich auch für die Begriffe "privat" und "öffentlich", die in diesem Zusammenhang ebenfalls nicht immer hundertprozentig stimmen.

Also

... gehe ich bewusst diesen Weg, da er nach meinen bisherigen Erfahrungen die verständlichste Vorgehensweise ist. Denkt aber immer daran, dass die hier verwendeten Ausdrücke genau genommen falsch sind. Ich mache das nur, damit die Umsteiger von anderen Sprachen es leichter haben, das teilweise seltsam anmutende Verhalten von JavaScript zu verstehen.

2. Merket auf und lauschet wohl

... ihr Leute, die ihr aus den "klassischen" Programmiersprachen kommt und mit bestimmten Prinzipien der OOP vertraut seid. Denn was ich euch hier zeige, hat eigentlich gar nichts mit dem zu tun, was ihr so kennen gelernt habt. Denn JavaScript geht hier einen völlig anderen Weg. Das liegt (auch) daran, dass sie zu den so genannten Prototypenbasierten Sprachen gehört.

Eben wegen dieser zum Teil großen Unterschiede gibt es seit Jahren einen fürchterlichen Streit darüber, ob JavaScript nun objektorientiert oder nur objektbasiert ist. Ich persönlich tendiere eher zu Letzterem, da es im Vergleich zu anderen Sprachen etliche Dinge nicht gibt. Auch ist die Art der Implementierung doch reichlich gewöhnungsbedürftig und wirkt hier und da auch recht krude.

Wichtig

Was das folgende Tutorial angeht, so sei euch eines gesagt. Den Krempel zu verstehen ist eine Sache. Den Mist auch noch vernünftig zu erklären eine ganz andere. Ich hoffe aber trotzdem, dass ihr die folgenden Erläuterungen begreifen werdet.

Ganz wichtig!

Da die Objektorientierte Programmierung unter JavaScript eine Geschichte für sich ist, solltet ihr euch dieses Tutorial wirklich erst komplett durchlesen, bevor ihr euch daran wagt, die erworbenen Kenntnisse praktisch umzusetzen. Und wenn ihr euch an meine Praxistutorials herantraut, so steht denen ein wenig skeptisch gegenüber. Denn da zeige ich euch nicht alles was möglich ist, sondern konzentriere mich nur auf bestimmte Dinge.

3. Objektorientiert und prozedural

In PHP gibt es da eine saubere Trennung. In JavaScript dagegen existiert zwischen beiden Universen eine Art von Hyperraum, wo sie sich treffen, um sich zu einer neuer Dimension zu vereinigen. Klingt ziemlich nach Star Trek, aber anders kann ich das leider nicht erklären. Außerdem wurde darauf in Star Wars nicht eingegangen.

4. Vorkenntnisse

Hier gibt es zwei Möglichkeiten. Erstens, ihr habt null Plan von OOP. Dann werdet ihr das Konzept recht schnell begreifen. Seid dann aber für anderen OOP-basierte Sprachen ein für alle Mal verdorben. Zweitens, ihr kennt die OOP schon aus anderen Sprachen. Dann werdet ihr erst mal gucken wie eine Kuh wenns donnert. Aber vielleicht begreift ihr es doch und könnt euch somit in zwei Welten bewegen.

Für den ersten Einstieg

Wer noch absolut keine Ahnung von OOP hat, sollte sich vielleicht mal meine mittlerweile recht bekannte Einführung in OOP mit PHP5 ansehen. Allerdings reichen da die ersten vier Unterpunkte der Grundlagen völlig. Es geht eh erst mal nur darum, dass ihr mit den verwendeten Begriffen etwas anfangen könnt.

5. Wichtig

Objekte

Im Gegensatz zu PHP ist in JavaScript eigentlich (fast) alles ein Objekt. Eine Funktion ist ein Objekt, eine Funktion in einer Funktion auch. Und das macht den meisten Leuten Angst, wenn sie zum ersten Mal mit OOP unter JavaScript konfrontiert werden. Zumindest denen aus der PHP-Ecke. Java-Entwickler ticken da wohl ein wenig anders. Dachte ich zumindest, bis ich ein paar Dankesmails von einigen bekam, die mit JavaScript auch ihre liebe Not und Mühe hatten.

weiter zum nächsten Abschnitt