OOP mit JavaScript Grundkurs

Vererbung über Prototypen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Vererbung kann in JavaScript durch Prototypen realisiert – oder, vorsichtig formuliert, "simuliert" – werden. Das erfordert, dass der prototype-Eigenschaft einer Konstruktor-Funktion ein als Prototyp dienendes Objekt zugewiesen wird. Wird mit der Konstruktor-Funktion nun ein Objekt erzeugt, wird beim Zugriff auf eine nichtexistierende Eigenschaft des neuen Objekts die entsprechende Eigenschaft des Prototyps, soweit vorhanden, zurückgegeben. Bei Bedarf kann man auch über das Schlüsselwort constructor auf den Konstruktor des Vorgängers zugreifen.
04:52

Transkript

In JavaScript kann man Vererbung simulieren, indem man Prototypen verkettet. Das macht man über die Eigenschaften "prototype" und "constructor". Und wie das genau geht, schauen wir uns in diesem Video an. Sie sehen, dass ich hier eine Konstruktor-Methode, Konstruktor-Funktion deklariert habe. Diese übergibt zwei Parameter ünd über "this" werden die Eigenschaften in der Konstruktor-Funktion, der Konstruktor-Methode verankert. Und hier kann man ein Objekt erzeugen aus dieser Konstruktor-Funktion, aus dieser Konstruktor-Methode. Das hier ist eine zweite Konstruktor-Methode die auch wieder die Eigenschaften "name" und "vorname" besitzt, aber eine zusätzliche Eigenschaft. Und das ist jetzt ein klassischer Fall wo man mit Vererbung sehr gut arbeiten kann. Was soll ich noch einmal deklarieren, was ich schon habe. Über "this.constructor", Klammer auf, "name", "vorame", Klammer zu, kann ich auf den Konstruktor einer "Superklasse", einen Super-Prototypen verweisen. Und dann muss ich nur die neue Eigenschaft initialisieren, beziehungsweise hier anlegen. Nur woher weiß der Mitarbeiter, dass er auf den Konstruktor von "Person" verweisen soll. Hier gibt es ja noch keine Beziehung. Das hier ist die entscheidende Zeile. Man nutzt die Prototype-Eigenschaft von "Mitarbeiter" zu sagen, dass auf ein Objekt vom Typ "Person", das heißt dem Super-Prototyp, verwiesen werden soll. Und damit ist ein Bezug zu eben dieser Konstruktor-Methode hier gelegt. Beachten Sie, dass ich hier kein Parameter anlegen muss. Das liegt eben daran, dass JavaScript grundsätzlich bei Funktionsaufrufen ja nur erstmal den Bezeichner benutzt. Sie sehen, dass ich danach eben auch ein Objekt vom Typ "Mitarbeiter" erzeugen kann, mit einer weiteren Eigenschaft. Drei Parameter. Ich lasse mir dann die Objektstruktur mal ausgeben. Das mache ich mit einer kleinen Hilfsfunktion, die folgendermaßen aussieht: Ich gucke mir einmal an, was ist der Konstruktor. Das heißt, ich schaue mir die "constructor"-Eigenschaft an. Und dann mit einer Schleife über das Objekt, über die Hashliste gebe ich Key-Values aus. Ganz interessant ist noch die Methode "hasOwnProperty". Damit kann ich durch aktive Angabe einer Eigenschaft als String testen, ob eine Eigenschaft bei einem Objekt vorhanden ist oder nicht. Und Sie werden sehen, dass gerade diese "pid" natürlich nicht bei Objekten vom Typ "Person" auftauchen darf, weil hier haben wir diese Eigenschaft nicht, aber bei Objekten vom Typ "Mitarbeiter". "name" hingegen oder "vorname" werden bei beiden Objekttypen auftauchen. Das wird vererbt an Objekte vom Typ "Mitarbeiter". Das ist ja der Sinn der Vererbung. Analysieren wir die Ausgabe, das heißt, wir haben hier erstmal ein Objekt vom Typ "Person". Der Konstruktor ist "Person(name, vorname)" Und das hier ist dann die Deklaration. Das hier sind die Key-Values, also "name" und "vorname". Und dann teste ich: Ist "vorname" eine Eigenschaft mit "hasOwnProperty"? Ja. "pid" natürlich nicht. Das gleiche mache ich für das Objekt vom Typ "Mitarbeiter", also das Objekt der "Subklasse". Ganz spannend ist eben der Wert der Konstruktor-Eigenschaft ist der Konstruktor der Superklasse, des Super-Prototypen. Da findet ja die Verkettung auch statt, dass eben genau dieser Konstruktor mitbenutzt werden soll, der sinnvollen Vererbung. Die Eigenschaften sind "name", "vorname", "pid". "vorname" ist selbstverständlich wieder eine Eigenschaft von dem Objekt, aber in diesem Fall auch "pid". Fazit: Mit Prototypen kann man durchaus so etwas wie Vererbung machen. Man muss eben nur die Prototypen miteinander verketten. Und der Schlüssel ist die Eigenschaft "prototype" sowie in der Regel auch ein Verweis über die Methode "constructor" auf den Konstruktor des Super-Prototypen. Aber die Beziehung vor allen Dingen wird über "prototype" ist gleich Objekt vom Typ des Super-Prototyp hergestellt.

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!