Che cos'è un oggetto di attivazione in JavaScript?

9

In a given execution context, the Variable object is the Activation object of that execution context.

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

Che cos'è un oggetto di attivazione?

    
posta rsman 09.03.2013 - 23:26
fonte

2 risposte

14

Fammi iniziare dalle radici ...

Contesto di esecuzione è un oggetto costituito da:

  • oggetto variabile, che è oggetto di attivazione in caso di funzioni
  • scope chain, che puoi considerare come un elenco collegato di ambiti esterni
  • this valore

Oggetto variabile è una cosa astratta, che può essere uno di quelli:

  • oggetto globale (nel contesto globale) - il luogo in cui risiedono le vars globali (come window , document o console in un browser)
  • oggetto di attivazione (per le funzioni, che definiscono gli ambiti in ECMAScript)

Oggetto di attivazione è un oggetto che contiene:

  • argomenti formali della funzione
  • arguments oggetto per questa funzione
  • qualsiasi vars e funzioni (denominate) 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 sia.

Altre spiegazioni con alcune belle foto:

risposta data 10.03.2013 - 00:38
fonte
2

Un oggetto di attivazione è l'oggetto utilizzato per contenere le proprietà che descrivono l'ambiente e lo scopo di una funzione di esecuzione. Su questo oggetto sono archiviati gli argomenti della funzione, ad esempio. Per definizione, ATTIVARE qualcosa è far sì che quella cosa agisca o FUNZIONE. Quindi, quando senti "Oggetto di attivazione", pensa all'oggetto "FUNZIONE", o, meglio ancora, l'oggetto radice che è LOCALE a una funzione (ad esempio, l'OGGETTO LOCALE FUNZIONE).

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

The term ‘Variable object' is a general or abstract term used to refer to any object that holds the properties that describe the environment and scope of the currently executing context.

Quindi, all'interno dell'ambiente e nell'ambito del contesto di esecuzione globale (cioè, al di fuori di una funzione), l'oggetto Global è l'oggetto Variable. Nel browser, poiché l'ambiente di esecuzione globale o esterno è il browser WINDOW, è l'oggetto window che viene utilizzato come oggetto Variabile. Questo è il motivo per cui le variabili dichiarate con la parola chiave var all'esterno delle funzioni finiscono sull'oggetto window .

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

    
risposta data 08.08.2015 - 17:02
fonte

Leggi altre domande sui tag