Domanda

Il termine "oggetto di attivazione" è solo un altro nome di "oggetto variabile" o c'è effettivamente qualche differenza tra loro?Ho letto alcuni articoli JavaScript su come si formano gli ambiti variabili in un contesto di esecuzione e dal mio punto di vista sembra che nella maggior parte degli articoli utilizzino questi due termini in modo intercambiabile.

È stato utile?

Soluzione

Bene, ho appena imparato qualcosa :).Da Questo articolo, sembrerebbe di sì nel contesto di esecuzione di una funzione, l'oggetto di attivazione viene utilizzato come oggetto variabile:

Quando viene creato un contesto di esecuzione, accadono una serie di cose in un ordine definito.Innanzitutto nel contesto di esecuzione di una funzione viene creato un oggetto "Attivazione".[...]

Quindi il processo di "istanziazione della variabile" avviene utilizzando un oggetto che ECMA 262 chiama oggetto "Variabile".Tuttavia, l'oggetto Attivazione viene utilizzato come oggetto Variabile (nota questo, è importante:sono lo stesso oggetto).Le proprietà denominate dell'oggetto Variable vengono create per ciascuno dei parametri formali della funzione e se gli argomenti della chiamata di funzione corrispondono a tali parametri i valori di tali argomenti vengono assegnati alle proprietà (altrimenti il ​​valore assegnato non è definito).

Tuttavia, quando ti trovi nell'ambito globale, non c'è un oggetto di attivazione, quindi l'oggetto globale viene utilizzato invece come oggetto variabile:

Il contesto di esecuzione globale riceve una gestione leggermente diversa poiché non ha argomenti, quindi non ha bisogno di un oggetto di attivazione definito per fare riferimento ad essi.[...] L'oggetto globale viene utilizzato come oggetto Variabile, motivo per cui le funzioni dichiarate globalmente diventano proprietà dell'oggetto globale.

Quindi sembra che "Oggetto di attivazione" e "Oggetto variabile" siano la stessa cosa nel contesto di una funzione, ma non nel contesto globale.

Altri suggerimenti

Un Oggetto di attivazione è l'oggetto più in alto in a catena di ambito con il più basso essere Oggetto globale. Invece oggetto variabile è un concetto astratto e quindi, a seconda del suo contesto di esecuzione, è un collegamento in catena di ambito Compreso Attivazione/Oggetto globale.


Contiene:

  • tutti i variabili e funzioni Dichiari all'interno del corpo della funzione;
  • argomenti denominati come specificato dalla firma della funzione;
  • argomenti come un oggetto chiamato arguments (nel caso in cui desideri che la tua funzione supporti più firme).

Non contiene:

  • this (poiché non è una variabile);
  • di nome espressioni di funzione.

Ulteriori informazioni - JavaScript. Il centro.

Poche citazioni in caso di tl; dr:

UN oggetto variabile è un Ambito di dati relativo al contesto di esecuzione. È un Oggetto speciale Associato al contesto e che memorizza le variabili e le dichiarazioni delle funzioni vengono definite nel contesto.

UN oggetto variabile è un concetto astratto. In diversi tipi di contesto, fisicamente, viene presentato usando un oggetto diverso.

..] nel contesto globale il oggetto variabile è il Oggetto globale stesso [..

..] una funzione oggetto variabile è lo stesso semplice oggetto variabile, ma inoltre variabili e Dichiarazioni delle funzioni, immagazzina anche parametri formali e arguments oggetto, ed è chiamato il Oggetto di attivazione.

..] quando si accede this In un codice, il suo valore è preso direttamente dal contesto di esecuzione senza alcun catena di ambito consultare.

È più preciso affermare che un oggetto di attivazione è un tipo di oggetto variabile. Questo è simile a come un uomo è un tipo di umano. Come indicato qui, il termine "oggetto variabile" è solo un termine generalizzato usato per descrivere qualsiasi oggetto che detiene le proprietà che descrivono l'ambiente e l'ambito del contesto attualmente in esecuzione.

Quindi, all'interno del contesto di esecuzione globale (cioè al di fuori di qualsiasi funzione), finisce per essere l'oggetto globale. Come mai? Perché è l'oggetto che contiene le proprietà che descrivono l'ambiente e la portata del contesto di esecuzione globale.

Considerando che all'interno della funzione di esecuzione del contesto di esecuzione locale (cioè all'interno di una funzione), è l'oggetto locale della funzione (aka l'oggetto di attivazione) che è l'oggetto variabile, in quanto è l'oggetto che contiene le proprietà che descrivono l'ambiente e l'ambito del attualmente funzione di esecuzione. Proprietà come gli argomenti della funzione, ad esempio.

Un oggetto attivato significa solo un oggetto che rappresenta un elemento su una pagina Web su cui si è verificato un evento. Quindi, se si fa clic sull'immagine, l'oggetto JavaScript che rappresenta quell'immagine è l'oggetto attivato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top