Frage

Ist der Begriff "Aktivierungsobjekt" nur ein anderer Name des "variablen Objekts" oder gibt es tatsächlich einen Unterschied zwischen ihnen? Ich habe ein paar JavaScript -Artikel darüber gelesen, wie variable Bereiche in einem Ausführungskontext gebildet werden, und aus meiner Sicht scheint es, dass sie in den meisten Artikeln diese beiden Begriffe austauschbar verwenden.

War es hilfreich?

Lösung

Nun, ich habe gerade etwas gelernt :). Aus Dieser Artikel, es scheint das zu sein innerhalb des Ausführungskontexts einer Funktion, Das Aktivierungsobjekt wird als variables Objekt verwendet:

Wenn ein Ausführungskontext erstellt wird, passieren eine Reihe von Dingen in einer definierten Reihenfolge. Erstens wird im Ausführungskontext einer Funktion ein "Aktivierungs" -Objekt erstellt. [...

Anschließend erfolgt der Prozess der "variablen Instanziierung" unter Verwendung eines Objekts, das ECMA 262 als "Variable" -Objekt bezeichnet. Das Aktivierungsobjekt wird jedoch als variables Objekt verwendet (beachten Sie dies, es ist wichtig: Sie sind dasselbe Objekt). Für die formalen Parameter der Funktion werden benannte Eigenschaften des Variablenobjekts erstellt. Wenn Argumente an den Funktionsaufruf den Parametern entsprechen, werden die Werte dieser Argumente den Eigenschaften zugewiesen (ansonsten ist der zugewiesene Wert nicht definiert).

Wenn Sie sich jedoch im globalen Bereich befinden, gibt es kein Aktivierungsobjekt, sodass das globale Objekt stattdessen als variables Objekt verwendet wird:

Der Global Execution -Kontext erhält eine leicht unterschiedliche Handhabung, da er keine Argumente enthält, sodass kein definiertes Aktivierungsobjekt erforderlich ist, um sich auf sie zu beziehen. [...] Das globale Objekt wird als variables Objekt verwendet, weshalb global deklarierte Funktionen zu Eigenschaften des globalen Objekts werden.

Es klingt also nach "Aktivierungsobjekt" und "variables Objekt" sind in einem Funktionskontext gleich, aber nicht im globalen Kontext.

Andere Tipps

Ein Aktivierungsobjekt ist das oberste Objekt in a Bereichskette mit dem untersten Wesen globales Objekt. Wohingegen Variabler Objekt ist ein abstraktes Konzept und daher je nach Ausführungskontext jeder Link in Bereichskette einschließlich Aktivierung/globales Objekt.


Es beinhaltet:

  • all die Variablen und Funktionen Sie deklarieren innerhalb des Funktionskörpers;
  • Argumente genannt wie in der Funktionssignatur angegeben;
  • Argumente als An Objekt benannt arguments (Falls Sie möchten, dass Ihre Funktion mehrere Signaturen unterstützt).

Es enthält nicht:

  • this (da es keine Variable ist);
  • genannt Funktionsausdrücke.

Weitere Infos - JavaScript. Der Kern.

Nur wenige Zitate im Fall von tl; dr:

EIN Variabler Objekt ist ein Datenumfang im Zusammenhang mit dem Ausführungskontext. Es ist ein Spezialobjekt Mit dem Kontext verbunden und die Variablen und Funktionserklärungen im Kontext gespeichert werden.

EIN Variabler Objekt ist ein abstraktes Konzept. In verschiedenen Kontexttypen wird es physisch unter Verwendung verschiedener Objekte dargestellt.

..] im globalen Kontext der Variabler Objekt ist der globales Objekt sich selbst [..

..] eine Funktion einer Funktion Variabler Objekt ist dasselbe einfach Variabler Objekt, aber außerdem Variablen und Funktionserklärungen, es speichert auch formale Parameter und arguments Objekt und wird das genannt Aktivierungsobjekt.

..] beim Zugriff this In einem Code wird sein Wert direkt aus dem entnommen Ausführungskontext ohne irgendetwas Bereichskette Sieh nach oben.

Es ist genauer zu sagen, dass ein Aktivierungsobjekt eine Art variabler Objekt ist. Dies ist ähnlich wie ein Mensch eine Art von Mensch. Wie gesagt hier, Der Begriff "Variablenobjekt" ist nur ein verallgemeinerter Begriff, der verwendet wird, um jedes Objekt zu beschreiben, das die Eigenschaften enthält, die die Umgebung und den Umfang des derzeit ausgeführten Kontexts beschreiben.

Daher ist es im globalen Ausführungskontext (dh außerhalb aller Funktionen) das globale Objekt. Wieso den? Weil es das Objekt ist, das die Eigenschaften enthält, die die Umgebung und den Umfang des globalen Ausführungskontexts beschreiben.

Während innerhalb der Funktion lokaler Kontext (dh innerhalb einer Funktion) lokal ausführte Ausführungsfunktion. Eigenschaften wie Funktionsargumente zum Beispiel.

Ein aktiviertes Objekt bedeutet nur ein Objekt, das ein Element auf einer Webseite darstellt, auf dem ein Ereignis aufgetreten ist. Wenn also ein Bild angeklickt wird, ist das JavaScript -Objekt, das dieses Bild darstellt, das aktivierte Objekt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top