Che cos'è un oggetto Activation in JavaScript?


13

In un determinato contesto di esecuzione, l'oggetto Variabile è l'oggetto Attivazione di quel contesto di esecuzione.

Dalla mia ricerca online, sono in grado di trovare la frase precedente riformulata in diversi modi, ma nessuno è in grado di dire di cosa si tratta.

Che cos'è un oggetto Activation?


Un oggetto di attivazione è l'oggetto più in alto in una catena di ambito con l' oggetto globale più in basso . Vedi questa risposta per maggiori dettagli.
Ikaruss,

Risposte:


17

Vorrei iniziare dalle radici ...

Il contesto di esecuzione è un oggetto costituito da:

  • oggetto variabile, che è oggetto di attivazione in caso di funzioni
  • catena dell'ambito, che puoi considerare come un elenco collegato di ambiti esterni
  • this valore

L'oggetto variabile è una cosa astratta, che può essere una di queste:

  • oggetto globale (nel contesto globale) - il luogo in cui risiedono i var globali (come window, documento consolein un browser)
  • oggetto di attivazione (per funzioni che definiscono gli ambiti in ECMAScript)

L'oggetto Activation è un oggetto che contiene:

  • argomenti formali della funzione
  • arguments oggetto per questa funzione
  • eventuali variabili e (nominate) funzioni all'interno di questa funzione

Quindi, l'oggetto di attivazione è solo un caso speciale di oggetto variabile.

È fondamentalmente un contenitore per tutte le cose locali a cui puoi accedere per nome all'interno di una funzione, ad eccezione di this. Potrei essere impreciso qui, ma è quello che penso che sia.

Altre spiegazioni con alcune belle foto:


2

Un oggetto Activation è l'oggetto usato per contenere le proprietà che descrivono l'ambiente e l'ambito di una funzione in esecuzione. È su questo oggetto che vengono archiviati argomenti di funzioni per esempio. Per definizione, ATTIVARE qualcosa significa causare quell'azione o FUNZIONE. Quindi, quando senti "Oggetto di attivazione", pensa all'oggetto "FUNZIONE" o, meglio ancora, all'oggetto radice che è LOCALE a una funzione (cioè all'OGGETTO LOCALE FUNZIONE).

Per quanto riguarda l'oggetto Variable, un oggetto Activation è più o meno un'istanza concreta di un oggetto Variable, che è esso stesso (facendo riferimento qui all'oggetto Variable) un tipo di oggetto ABSTRACT. Come indicato qui ...

Il termine "oggetto variabile" è un termine generale o astratto usato per riferirsi a qualsiasi oggetto che detenga le proprietà che descrivono l'ambiente e l'ambito del contesto attualmente in esecuzione.

Quindi, all'interno dell'ambiente e dell'ambito del contesto di esecuzione globale (ovvero, al di fuori di una funzione), l'oggetto Globale è l'oggetto Variabile. Nel browser, poiché l'ambiente di esecuzione globale o più esterno è la FINESTRA del browser, è l' windowoggetto che finisce per essere utilizzato come oggetto Variabile. Questo è il motivo per cui le variabili dichiarate con la varparola chiave al di fuori delle funzioni finiscono windowsull'oggetto.

Nell'ambito di una funzione, tuttavia, è l'oggetto Activation (ovvero l'oggetto locale della funzione) che è l'oggetto variabile perché è questo oggetto che viene utilizzato per memorizzare le proprietà che descrivono l'ambito di una funzione in esecuzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.