Pregunta

¿Es el término "objeto de activación" otro nombre de "objeto variable" o realmente hay alguna diferencia entre ellos? He estado leyendo algunos artículos de JavaScript sobre cómo se forman los ámbitos variables en un contexto de ejecución, y desde mi punto de vista parece que en la mayoría de los artículos usan estos dos términos indistintamente.

¿Fue útil?

Solución

Bueno, acabo de aprender algo :). De Este artículo, parecería que Dentro del contexto de ejecución de una función, el objeto de activación se usa como objeto variable:

Cuando se crea un contexto de ejecución, ocurren una serie de cosas en un orden definido. Primero, en el contexto de ejecución de una función, se crea un objeto de "activación". [...

Luego, el proceso de "instanciación variable" tiene lugar utilizando un objeto al que el ECMA 262 se refiere como el objeto "variable". Sin embargo, el objeto de activación se usa como objeto variable (tenga en cuenta esto, es importante: son el mismo objeto). Las propiedades con nombre del objeto variable se crean para cada uno de los parámetros formales de la función, y si los argumentos de la llamada de función corresponden con esos parámetros, los valores de esos argumentos se asignan a las propiedades (de lo contrario, el valor asignado está indefinido).

Sin embargo, cuando estás en el alcance global, no hay un objeto de activación, por lo que el objeto global se usa como objeto variable en su lugar:

El contexto de ejecución global obtiene un manejo ligeramente diferente, ya que no tiene argumentos, por lo que no necesita un objeto de activación definido para referirse a ellos. [...] El objeto global se usa como el objeto variable, por lo que las funciones declaradas globalmente se convierten en propiedades del objeto global.

Por lo tanto, suena como "objeto de activación" y "objeto variable" son lo mismo dentro de un contexto de función, pero no dentro del contexto global.

Otros consejos

Un objeto de activación es el objeto superior en un cadena de alcance con el más bajo siendo objeto global. Mientras objeto variable es concepto abstracto y, por lo tanto, dependiendo de su contexto de ejecución, es cualquier enlace en cadena de alcance incluido activación/objeto global.


Contiene:

  • todos variables y funciones Declaras dentro del cuerpo de la función;
  • argumentos nombrados Como se especifica por la firma de la función;
  • argumentos como un objeto nombrado arguments (En caso de que desee que su función admite múltiples firmas).

No contiene:

  • this (ya que no es una variable);
  • nombrada Expresiones de funciones.

Informacion adicional - Javascript. El núcleo.

Pocas citas en caso de tl; Dr:

A objeto variable es un alcance de los datos relacionado con el contexto de ejecución. Es un objeto especial asociado con el contexto y qué almacenamiento de variables y declaraciones de funciones se están definiendo dentro del contexto.

A objeto variable es un concepto abstracto. En diferentes tipos de contexto, físicamente, se presenta usando un objeto diferente.

..] en el contexto global el objeto variable es el objeto global sí mismo [..

..] una función objeto variable es lo mismo simple objeto variable, pero además variables y Declaraciones de funciones, también almacena parámetros formales y arguments objeto, y se llama el objeto de activación.

..] Al acceder this En un código, su valor se toma directamente del contexto de ejecución sin ningún cadena de alcance buscar.

Es más exacto decir que un objeto de activación es un tipo de objeto variable. Esto es similar a cómo un hombre es un tipo de humano. Como se indicó aquí, el término 'objeto variable' es solo un término generalizado utilizado para describir cualquier objeto que contenga las propiedades que describen el entorno y el alcance del contexto que se ejecuta actualmente.

Por lo tanto, dentro del contexto de ejecución global (es decir, fuera de cualquier función), termina siendo el objeto global. ¿Por qué? Porque es el objeto que contiene las propiedades que describen el entorno y el alcance del contexto de ejecución global.

Mientras que dentro del contexto de ejecución local de la función (es decir, dentro de una función), es el objeto local de la función (también conocido como el objeto de activación) el objeto variable, ya que es el objeto que contiene las propiedades que describen el entorno y el alcance del actualmente ejecución de la función. Propiedades como argumentos de función, por ejemplo.

Un objeto activado solo significa un objeto que representa un elemento en una página web en la que ocurrió un evento. Entonces, si se hace clic en una imagen, el objeto JavaScript que representa esa imagen es el objeto activado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top