¿Qué es un objeto de activación en JavaScript?

13

En un contexto de ejecución dado, el objeto Variable es el objeto de Activación de ese contexto de ejecución.

De mi investigación en línea, puedo encontrar la frase anterior reformulada de diferentes maneras, pero nadie puede decir cuál es.

¿Qué es un objeto de activación?

rsman
fuente
Un objeto de activación es el objeto superior en una cadena de alcance con el objeto global más inferior . Vea esta respuesta para más detalles.
ikaruss

Respuestas:

17

Déjame comenzar desde las raíces ...

El contexto de ejecución es un objeto que consiste en:

  • objeto variable, que es objeto de activación en caso de funciones
  • cadena de alcance, que puede considerarse como una lista vinculada de ámbitos externos
  • this valor

El objeto variable es una cosa abstracta, que puede ser uno de esos:

  • objeto global (en el contexto global) - el lugar donde vars globales (como window, documento consoleen un navegador) residen
  • objeto de activación (para funciones, que definen ámbitos en ECMAScript)

El objeto de activación es un objeto que contiene:

  • argumentos formales de la función
  • arguments objeto para esta función
  • cualquier vars y funciones (nombradas) dentro de esta función

Por lo tanto, el objeto de activación es solo un caso especial de objeto variable.

Es básicamente un contenedor para todas las cosas locales a las que puede acceder por nombre dentro de una función, excepto this. Puedo ser impreciso aquí, pero eso es lo que creo que es.

Más explicaciones con algunas buenas fotos:

scriptin
fuente
2

Un objeto de activación es el objeto utilizado para contener las propiedades que describen el entorno y el alcance de una función de ejecución. Es en este objeto donde se almacenan los argumentos de la función, por ejemplo. Por definición, ACTIVAR algo es hacer que esa cosa actúe o FUNCIONE. Entonces, cuando escuche 'Objeto de activación', piense en el objeto 'FUNCIÓN', o mejor aún, en el objeto raíz que es LOCAL para una función (es decir, el OBJETO LOCAL DE FUNCIÓN).

Con respecto al objeto Variable, un objeto de Activación es más o menos una instancia concreta de un objeto Variable, que es en sí mismo (refiriéndose al objeto Variable aquí) un tipo de objeto ABSTRACT. Como se indica aquí ...

El término "objeto variable" es un término general o abstracto que se utiliza para referirse a cualquier objeto que contenga las propiedades que describen el entorno y el alcance del contexto que se está ejecutando actualmente.

Por lo tanto, dentro del entorno y el alcance del contexto de ejecución global (es decir, cuando está fuera de una función), el objeto Global es el objeto Variable. En el navegador, dado que el entorno de ejecución global o más externo es la VENTANA del navegador, es el windowobjeto que termina siendo utilizado como objeto Variable. Es por eso que las variables declaradas con la varpalabra clave fuera de las funciones terminan en el windowobjeto.

Sin embargo, en el alcance de una función, es el objeto de Activación (es decir, el objeto local de la función) el objeto variable porque es este objeto el que se usa para almacenar las propiedades que describen el alcance de una función en ejecución.

ify.io
fuente