Hauptmenü

Untermenü

OOP mit JavaScript

1. 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