Was ist ein Aktivierungsobjekt in JavaScript?

13

In einem bestimmten Ausführungskontext ist das Variable-Objekt das Aktivierungsobjekt dieses Ausführungskontexts.

Durch meine Online-Recherche kann ich den vorherigen Satz auf unterschiedliche Weise umformulieren, aber niemand kann sagen, was er ist.

Was ist ein Aktivierungsobjekt?

rsman
quelle
Ein Aktivierungsobjekt ist das oberste Objekt in einer Bereichskette, wobei das unterste ein globales Objekt ist . Siehe diese Antwort für weitere Details.
Ikaruss

Antworten:

17

Lassen Sie mich von den Wurzeln ausgehen ...

Der Ausführungskontext ist ein Objekt, das besteht aus:

  • variables Objekt, das bei Funktionen Aktivierungsobjekt ist
  • Bereichskette, die Sie sich als verknüpfte Liste der äußeren Bereiche vorstellen können
  • this Wert

Variables Objekt ist eine abstrakte Sache, die eine davon sein kann:

  • globales Objekt (im globalen Kontext) - der Ort , an dem globalen Variablen (wie window, documentoder consolein einem Browser) residieren
  • Aktivierungsobjekt (für Funktionen, die Bereiche in ECMAScript definieren)

Aktivierungsobjekt ist ein Objekt, das Folgendes enthält:

  • formale Argumente der Funktion
  • arguments Objekt für diese Funktion
  • Alle vars und (benannten) Funktionen innerhalb dieser Funktion

Das Aktivierungsobjekt ist also nur ein Sonderfall eines variablen Objekts.

Es ist im Grunde ein Container für alle lokalen Inhalte, auf die Sie innerhalb einer Funktion mit Namen zugreifen können, mit Ausnahme von this. Ich mag hier ungenau sein, aber das denke ich auch.

Weitere Erklärungen mit ein paar schönen Bildern:

scriptin
quelle
2

Ein Aktivierungsobjekt ist das Objekt, das die Eigenschaften enthält, die die Umgebung und den Umfang einer ausführenden Funktion beschreiben. Auf diesem Objekt werden beispielsweise Funktionsargumente gespeichert. Per Definition bedeutet etwas zu AKTIVIEREN, dass das Ding handelt oder FUNKTIONIERT. Wenn Sie also 'Aktivierungsobjekt' hören, denken Sie an das Objekt 'FUNCTION' oder besser an das Stammobjekt, das für eine Funktion LOCAL ist (dh das FUNCTION LOCAL OBJECT).

In Bezug auf das Variablenobjekt ist ein Aktivierungsobjekt mehr oder weniger eine konkrete Instanz eines Variablenobjekts, das selbst (hier auf das Variablenobjekt bezogen) ein ABSTRACT-Objekttyp ist. Wie hier angegeben ...

Der Begriff "Variables Objekt" ist ein allgemeiner oder abstrakter Begriff, der sich auf jedes Objekt bezieht, das die Eigenschaften enthält, die die Umgebung und den Umfang des aktuell ausgeführten Kontexts beschreiben.

Daher ist das globale Objekt innerhalb der Umgebung und des Umfangs des globalen Ausführungskontexts (dh außerhalb einer Funktion) das variable Objekt. Da es sich bei der globalen oder äußersten ausführenden Umgebung im Browser um das Browser-WINDOW handelt, wird das windowObjekt letztendlich als Variablenobjekt verwendet. Aus diesem Grund varlanden Variablen, die mit dem Schlüsselwort außerhalb von Funktionen deklariert wurden, im windowObjekt.

Im Bereich einer Funktion ist jedoch das Aktivierungsobjekt (dh das lokale Funktionsobjekt) das variable Objekt, da dieses Objekt zum Speichern der Eigenschaften verwendet wird, die den Bereich einer ausführenden Funktion beschreiben.

ify.io
quelle