OOP mit JavaScript Grundkurs

Polymorphie und Überladen mittels "arguments" simulieren

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
JavaScript unterscheidet Methoden und Funktionen ausschließlich über den Bezeichner. Doch mittels des stets verfügbaren Übergabe-Arrays arguments erreicht man polymorphes Verhalten und simuliert Überladen.
04:50

Transkript

Ein ganz wichtiger Mechanismus bei der objektorientierten Programmierung nennt sich "Überladen" oder overload. Das bedeutet, dass im Grunde Dinge mit gleichem Namen unterschiedlich verwendet werden können. Man nutzt Überladen im Wesentlichen um mehrere Funktionen beziehungsweise im objektorientierten Umfeld Methoden gleichen Namens zur Verfügung zu stellen. Dazu braucht man dann aber ein eindeutiges Entscheidungsmerkmal und das ist in JavaScript nicht so ganz einfach. Ich habe hier ein Beispiel vorbereitet, in dem ich eine Funktion deklariere. Eine ganz normale Funktion, die mit einer flexiblen Anzahl von Parametern aufgerufen werden soll. Es ist nun so, dass beim echten Überladen nicht nur der Name einer Funktion oder Methode beim Aufruf berücksichtigt wird, sondern auch die Anzahl und der Datentyp der Parameter. Ich möchte mich hier auf das Überladen von Methoden oder Funktionen konzentrieren. Das Überladen von Operatoren, was in einigen Sprachen auch möglich ist, soll außer Acht gelassen werden. Nun haben wir in JavaScript aber das "Problem", dass zum Aufruf einer Funktion oder Methode immer nur der Name berücksichtigt wird. Ausschließlich. Das erlaubt es auch etwa mit Funktionsreferenzen zu arbeiten. Man gibt einfach eine Referenz auf die Deklaration an, und zwar über den Namen der Funktion. Das wiederum erlaubt es aber nicht, die Parameter mit zu berücksichtigen. Schauen Sie einmal hier hin, das ist die Deklaration der Funktion, die ich hier aufrufe. Ich habe hier keinerlei Parameter angegeben. Ich benutze aber hier zum Aufruf mit einer Inline-Referenz einmal keinen Parameter, hier einen Parameter vom Typ object, und danach kommen noch Parameter mit unterschiedlichen Typen und unterschiedlicher Anzahl. JavaScript sagt jetzt, dass es egal ist, welche Parameter hier auftauchen, da es den Namen weiß und deshalb diese Funktion aufruft. Das Überladen soll es aber möglich machen, dass sich Dinge unterschiedlich verhalten aufgrund der Parameterliste, wie etwa beim klassischen Überladen von Methoden in Java oder C#. Und das funktioniert eben nicht. Es wird immer die gleiche Funktion aufgerufen, also kann man in JavaScript eigentlich nicht überladen. Man kann aber so tun als ob, denn es geht im Grunde ja doch nur darum, dass sich Dinge unterschiedlich verhalten aufgrund der Anzahl und des Typs der Parameter. Und das muss ich halt in diesem Fall, also bei JavaScript, im Inneren regeln. Es wird zwar immer die gleiche Funktion aufgerufen, aber aufgrund der Anzahl der Parameter kann ich unterscheiden, wie sich eine Funktion zu verhalten hat. Dazu gibt es das Token arguments. Das ist ein Array mit allen Parametern, die übergeben werden. Das kann Null sein, das kann auch eine beliebige Anzahl von Parametern enthalten. Über die Angabe length, die Eigenschaft, habe ich ja die Anzahl der Parameter, die übergeben werden. Nun kann ich irgendwie entscheiden: Wenn die Anzahl Null ist, mache ich das eine, wenn die Anzahl etwas anderes ist, mache ich etwas anderes. Ich kann theoretisch sogar den Typ berücksichtigen, denn es gibt ja typeof. Man kann also auch den Typ der übergebenen Parameter beachten und muss dann im Inneren mit einer einfachen Logik, ifelse, switch case oder so etwas, ein polymorphes Verhalten simulieren. Das ist also kein echtes Überladen, aber man tut so, als ob es das Überladen von Funktionen respektive Methoden wäre. Das wäre übrigens die Ausgabe von dieser "überladenen" Funktion, dieses polymorphe Verhalten, so wie es hier simuliert wurde. Das heißt, im Grunde habe ich hier kein polymorphes Verhalten programmiert, aber ich zeige, wie man mit arguments arbeiten kann. Mit length, wie ich schon angedeutet habe, die Anzahl der Parameter, und dann eben den Typ überprüfen mit den üblichen Möglichkeiten von JavaScript. Das erlaubt es, diese Funktionalität des Überladens auch in JavaScript zur Verfügung zu haben.

OOP mit JavaScript Grundkurs

Sehen Sie, wie Sie mit JavaScript objektorientiert programmieren können.

3 Std. 8 min (35 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:09.03.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!