Verzeichnisfunktionen in JavaScript [] (Verzeichnisfunktionen in JavaScript), Lektion, Seite 723582
https://www.purl.org/stefan_ram/pub/verzeichnisfunktionen_in_javascript (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
JavaScript-Kurs

Verzeichnisfunktionen in JavaScript 

(Diese Lektion ist bisher zu knapp, aber es fehlt noch die Zeit, um sie ausführlicher zu formulieren.)

Auswertung
v = { x: 2, f: function(){ return v.x; } }
Auswertung
v.f()
2
Auswertung
v = { x: 2, f: function(){ return this.x; } }
Auswertung
v.f()
2

»this« steht bei einem normalen Aufruf in einer langen Funktion für das Ziel (den Verzeichnis vor dem Punkt).

Weil »this« leider nicht immer  für das Hauptverzeichnis verwendet werden kann, wird in diesem Kurs auch „Ⓖ.“ (wie „global“) als kurze Schreibweise verwendet, die immer  das globale Verzeichnis bedeutet.

Der Leser muß „Ⓖ“ bei der Eingabe durch einen Ausdruck für das globale Verzeichnis ersetzen. Vorläufig ist dieser Ausdruck immer »this«. Später werden wir aber sehen, daß es leider nicht immer möglich ist, »this« dafür zu verwenden.

»Ⓖ.Infinity« bedeutet also den Wert des Schlüssel »Infinity« im Hauptverzeichnis »Ⓖ.«. Bis auf weiteres muß dies als »this.Infinity« eingegeben werden.

Bis auf weiteres ist dann für das »this« das Wort »this« einzusetzen, so daß sich dann wieder »this.Infinity« ergibt.

In diesem Fall kann man »this« also nicht mehr verwenden, um sich auf das globale Verzeichnis »Ⓖ« zu beziehen! Weil »this« also nicht immer für das globale Verzeichnis steht, haben wir die Schreibweise »Ⓖ« eingeführt, die immer für das globale Verzeichnis steht, aber so leider nicht in JavaScript  verwendet werden kann.

Das folgende Beispiel zeigt, daß »this« wirklich immer für das jeweilige Zielobjekt steht, und nicht  für das Objekt, in dem der Funktionsausdruck enthalten ist.

Auswertung
w = { x: 9, f: v.f }
Auswertung
w.f()
9

Bei der Auswertung von »w.f()« steht das »this« nun für »w«, obwohl der Ausdruck für die Funktion in »v« enthalten ist. Aber der Wert von »this« ist das vor dem Punkt stehende Ziel und nicht das den Funktionsausdruck enthaltende Verzeichnis. »w.f« ist aber dieselbe  Funktion wie »v.f«.

Auswertung
w.f === v.f
true

Durch »call« kann der Wert von »this« aber auch ausdrücklich festgelegt werden.

Auswertung
v.f.call( { x: 3 } )
3

Hier ist der Wert von »this« nun weder »v« noch »w«, sondern das call-Argument »{ x: 3 }«.

Innerhalb einer Pfeifunktion hat »this« aber die Bedeutung, die es an der Stelle der Definition der Pfeilfunktion hat; das heißt, daß eine Pfeilfunktion anders als eine lange Funktion dem »this« keine besondere Bedeutung verleiht. Wenn eine Funktionsausdruck mit Pfeilschreibweise beispielsweise direkt in einem Funktionausdruck mit langer Schreibweise enthalten ist, dann hat »this« in dem Funktionsausdruck mit Pfeilschreibweise denselben Wert wie in dem enthaltenden Funktionausdruck mit langer Schreibweise.

Gemeinsamer Bezug auf einen Aktivierungsverbund

Auswertung
f = function( x ){ return { inc: ()=> x = x + 1, reset: () => x = 0 }; }
function f()

zaehler = f( 10 );

zaehler.inc()

11
zaehler.inc()
12

z = f( 0 );

z.inc();

1
z.inc();
2
zaehler.inc()
13
zaehler.reset()
0
z.inc();
3
zaehler.inc()
1

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723582 stefan_ram:723582 Verzeichnisfunktionen in JavaScript Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723582, slrprddef723582, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/verzeichnisfunktionen_in_javascript