OOP mit JavaScript Grundkurs

Ein "sicherer" Konstruktor

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Da JavaScript syntaktisch weder Funktionen von Methoden unterscheidet noch verhindert, dass man Konstruktormethoden ohne vorangestelltes new aufruft, muss man bei Bedarf sicherstellen, dass ein Konstruktor nicht falsch angewendet werden kann. Ein sogenannter self-invoking Constructor löst das Problem.
04:22

Transkript

In diesem Video möchte ich Ihnen zeigen, wie Sie in JavaScript einen sicheren Konstruktor erzeugen können. Denn es gibt einige Besonderheiten im Zusammenhang mit Konstruktoren, die den Umgang sehr einfach machen, aber auch sehr gefährlich. Erst einmal eine Konstruktorfunktion oder -methode muss nicht so einen Aufbau haben. Das heißt, mit "this."-Eigenschaft oder -Methode Dinge in einer Konstruktorfunktion zu verankern, ist nicht zwingend, Sie können jede Funktion instanziieren, sobald Sie mit "new" arbeiten. "new", Name der Funktion, Klammer auf, Klammer zu und schon wird ein Objekt erzeugt. Des Weiteren eine als Konstruktormethode oder -funktion gedachte Funktion kann auch einen Rückgabewert liefern. Das heißt, "return" ist nicht verboten. Und hier können Sie beliebige Datentypen zurückgeben, das muss kein "object" sein. Ganz kritisch ist es, wenn man eine als Konstruktor gedachte Funktion ohne "new" aufruft. Dann wird nämlich auf dem globalen Objekt operiert, aber kein Objekt zurückgegeben. Das sind natürlich immense Fehlerquellen, die kann man allerdings ausschalten. Dazu muss man die Struktur von diesem Konstruktor etwas ändern. Sie müssen ausnutzen, dass Sie ein Objekt zurückliefern können, mit "return", beispielsweise. In dem Fall liefere ich natürlich ein Objekt vom Typ "Person", aber es macht wenig Sinn, das in jedem Fall so zu machen, denn wir haben davor diese "this"-Syntax und die wird ja nie erreicht. Wenn wir sie davorsetzen, nutzt das auch nichts, weil wenn ohne "new" aufgerufen wird, ist "this" nicht richtig initialisiert. Es verweist nicht auf das aktuelle Objekt, sondern nur auf das globale Objekt, das wollen wir nicht haben. Wir müssen also überprüfen, wie diese Funktion aufgerufen wird. Es gibt einen Operator, der heißt "instanceof" . So können wir schauen, was hat denn "this" für eine Belegung. Wenn das nicht "instanceof Person" ist, dann geben wir mit "new" ein passendes Objekt zurück. Das heißt, wir gehen praktisch wieder hinein, das ist eine Art Rekursion, natürlich keine echte Rekursion. Aber dann ist "this" richtig initialisiert, und wir können die Werte der Eigenschaften richtig zuweisen, und alles ist gut. Das hier war die Ausgabe für den Fall, dass wir den Konstruktor nicht sicher benutzen. In dem Fall wird nur ein Objekt erzeugt, nämlich sobald wir mit "new" arbeiten. Und sobald wir ohne "new" arbeiten, wird kein Objekt erzeugt. Führen wir einmal einen Reload durch. Sie sehen, dass jetzt auch für die zweite Syntax ein Objekt erzeugt wird. Das heißt, sofern wir mit "instanceof" überprüfen, ob "this" vom richtigen Typ ist oder auf die richtige Klasse, den Prototypen verweist, können wir gewährleisten, dass falls ohne "new" gearbeitet wird, implizit "new" mit aufgerufen wird. Und damit haben wir einen sicheren Konstruktor. Man nennt dieses Ding dann auch einen "self-invoking constructor". Noch eine kleine Abschlussbemerkung: Sobald Sie mit dem "Strict Mode" arbeiten, wird verhindert, dass eine Konstruktorfunktion ohne den "new-Operator" aufgerufen wird.

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!