Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

OOP mit JavaScript Grundkurs

Was sind Referenzen?

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Technisch ist eine Referenz ein Verweis auf eine Speicheradresse. In JavaScript wird diese Adresse allerdings niemals direkt zur Verfügung stehen. JavaScript nutzt dafür Referenzen multifunktional, etwa zum Binden von Funktionsaufrufen an Ereigniseigenschaften (Callbacks), als Übergabeparameter an Funktionen oder zum Verketten mehrerer Variablen. Allerdings muss man aufpassen, ob man wirklich eine Referenz vorliegen hat. Beim Umgang mit primitiven Datentypen ist das meist nicht der Fall.
07:33

Transkript

Eine sehr spannende Sache in JavaScript sind sogenannte Referenzen. Wir wollen uns in diesem Video etwas genauer ansehen, was damit auf sich hat. Referenzen, oft auch Zeiger oder manchmal auch Pointer genannt, werden in JavaScript nur indirekt zur Verfügung gestellt. Sie können also nicht die Speicheradressen, auf die diese Referenzen verweisen, direkt im Quellcode sehen oder verwenden, aber natürlich muss technisch auch bei JavaScript Speicherplatz allokiert werden. Von daher arbeitet JavaScript selbstverständlich mit Referenzen. Aber was ist es genau? Ich habe hier ein kleines Beispiel vorbereitet und deklariere hier eine Variable o1 und erzeuge mit einer JSON Syntax hier ein Objekt. Das heißt, die Variable o1 verweist auf ein Objekt. Die Variable o2 ist angelegt, aber noch nicht initialisiert und dann haben wir hier noch zwei primitive Datentypen, genauer genommen Variablen, die primitive Datentypen als Werte zugewiesen bekommen. Ich werde mal die Variable z1 jetzt nehmen und hochzählen. Damit hat sie natürlich den Wert 2. Welchen Wert hat z2? Es ist offensichtlich klar, dass z2 hier durch die Änderung von z1 nicht berührt wird. Ich möchte vermeiden, hier eine trivale Ausgabe vorzunehmen. Aber es ist sicherlich spannend, zu überlegen, was mit z3 jetzt passiert ist. Welchen Wert hat z3 nachdem ich z1 erhöht habe? Und das schauen wir uns mal an. Ich mache einen document.write und lasse mir z3 ausgeben. Das ist die Ausgabe. Der Wert ist 1. Hatten Sie das erwartet? Das Thema hier ist ja Referenzen und man hätte ja davon ausgehen können, dass diese Zuweisungen hier, z1 wird z3 zugewiesen, eine Referenz, einen Zeiger auf z1 zuweist, aber in JavaScript ist das eben nicht ganz so einfach, weil Dinge, die man aus anderen Programmiersprachen kennt, hier eben in der Regel etwas anders funktionieren. Wenn man das Java gemacht hätte, hätte man tatsächlich einen Zeiger auf diesen Bereich gehabt. Hier hat man eine Wertzuweisung. Das heißt, es wurde eine neue Variable z3 angelegt, der Wert der Original Variable z1 hinein kopiert und Sie können jetzt z1 und z3 beliebig manipulieren. Ich könnte jetzt z3+=5 machen und mir danach mal z1 ausgeben. Da sollten wir davor noch einen Zeilenumbruch machen oder eine Trennlinie, damit wir was sehen. Und das ist das Ergebnis. Wir haben hier die 2. Also das, was hier durch z1++ entstanden ist. z3 ist aber verändert worden und eigentlich, wenn es wirklich eine Referenzbeziehung wäre, müsste dann z1 sich auch ändern. Es ist explizit eben nicht der Fall. Nun habe ich nicht umsonst hier auch ein Objekt. Und wir haben hier eine zweite Variable für das Objekt Und auf diese Variable kann ich mal eine Referenz zeigen lassen. Das heißt, ich spiele die gleiche Situation durch Scheinbar. Wie eben. Nur in dem Moment arbeite ich hier eben mit einem Objekt und dann verändere ich einmal das Objekt o1. o1.name = "Kater" oder so. Ja, und das Spannende wird eben sein, was passiert, wenn ich jetzt o2.name auswähle? Es spielt keine Rolle, dass o2 vorher nicht mit einem anderen Objekt belegt war. Und wir haben hier unseren Kater. Also eine gänzlich andere Situation als bei den primitiven Datentypen. Hier haben wir genau das, was man hier hätte auch erwarten können aus anderen Programmiersprachen nämlich eine Referenz auf einen Speicherbereich. Und wenn sich im Original Speicherbereich etwas ändert, wird auch ein Zugriff über die referenzierende Variable, die andere Variable hier diese Änderungen bemerken. Es ist also relativ tricky, in JavaScript Referenzen zu haben oder eben nicht. Als einfache Faustformel, wenn man primitive Werte hat, hat man keine Referenzen, Call by Value oder Copy by Value kann man das betrachten und immer dann, wenn es um Objekte, Arrays geht, dann hat man bei solchen Aktionen Referenzen zur Verfügung. JavaScript nutzt Referenzen dann multifunktional, denn Sie können beispielsweise in Objektdeklarationen zum Beispiel eine Referenz notieren, um auf eine Methode, eine Funktion zu verweisen, entweder indem Sie hier eine... anonyme Funktion notieren oder den Namen einer Funktion. Das ist dann eine Referenz auf diese Funktion. Also wenn man hier beispielsweise so etwas notiert und es gibt hier eine Funktion miau, dann ist die hier zugeordnet. Desweiteren nutzt JavaScript Referenzen auch bei Übergabewerten an Funktionen unter Umständen und vor allen Dingen bei Event Handlern. Wenn Sie beispielsweise sich vorstellen document.getElementById.onclick klassischer Event Handler, um auf einen Click zu reagieren, = Name der Funktion, dann haben Sie eine Referenz auf diese Funktion und Sie notieren da eine anonyme Funktion, einen Callback was auch immer. Um es zusammen zu fassen, JavaScript besitzt Referenzen, nutzt es multifunktional, aber Sie müssen aufpassen, ob Sie wirklich eine Referenz vorliegen haben im Falle von Objekten, Callback Methoden, Callback Funktionen, was auch immer ist das der Fall oder ob Sie, wie in diesem Fall, mit einem primitiven Datentypen nicht eine Kopie eines Wertes vorliegen haben und keine Referenz.

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!