Question

Le terme « objet d'activation » juste un autre nom de « objet variable » ou est-il réellement une différence entre eux? Je suis en train de lire quelques articles JavaScript sur la façon dont les étendues variables sont formées dans un contexte d'exécution, et de mon point de vue, il semble que dans la plupart des articles qu'ils utilisent ces deux termes de façon interchangeable.

Était-ce utile?

La solution

Eh bien, je viens d'apprendre quelque chose :). De cet article , il semblerait que dans le cadre de l'exécution d'une fonction , l'activation l'objet est utilisé comme objet variable:

Quand un contexte d'exécution est créé un certain nombre de choses se passent dans un ordre défini. Tout d'abord, dans le contexte d'exécution d'une fonction, un objet « activation » est créé. [...]

Ensuite, le processus de « instanciation variable » a lieu à l'aide d'un objet qui ECMA 262 désigne comme l'objet « Variable ». Cependant, l'objet d'activation est utilisé comme objet variable (notez cela, il est important: ils sont le même objet). Les propriétés nommées de l'objet variable sont créés pour chacun des paramètres formels de la fonction, et si des arguments à la correspondent d'appel de fonction avec ces paramètres les valeurs de ces arguments sont affectés aux propriétés (sinon la valeur attribuée est non définie).

Toutefois, lorsque vous êtes dans la portée globale, il n'y a pas un objet d'activation, de sorte que l'objet global est utilisé comme variable objet au lieu:

Le contexte d'exécution global obtient une manipulation un peu différent car il ne dispose pas d'arguments il ne se référer à eux pas besoin d'un objet d'activation défini. [...] L'objet global est utilisé comme objet variable, ce qui explique pourquoi les fonctions déclarées à l'échelle mondiale deviennent des propriétés de l'objet global.

Il semble donc que « Activation objet » et « objet variable » sont la même chose dans un contexte de fonction, mais pas dans le contexte mondial.

Autres conseils

objet d'activation est la plus élevée dans un objet portée à chaîne avec l'être le plus bas de l'objet global . Alors que objet variable est un concept abstrait et donc, en fonction de son contexte d'exécution, est un lien dans portée chaîne dont activation / objet global .


Il contient:

  • tous les variables et fonctions vous déclarer à l'intérieur du corps de la fonction;
  • arguments nommés comme spécifié par la signature de la fonction;
  • arguments comme objet arguments nommé (dans le cas où vous voulez que votre fonction en charge plusieurs signatures).

Il ne contient pas:

  • this (comme ce n'est pas une variable);
  • appelé expressions de fonction .

Plus d'infos - JavaScript. Le noyau.

Quelques citations en cas de tl; dr :

objet variable est un portée des données en rapport avec le contexte d'exécution. Il est un objet spécial associé au contexte et quelles variables les magasins et les déclarations de fonction sont définies dans le contexte.

objet variable est un concept abstrait . Dans différents types de contexte, il est physiquement présenté en utilisant différents objets.

[..] dans le contexte mondial objet variable est le objet global lui-même [..]

[..] un objet de fonction variable est le même objet simple variable , mais en plus les variables et déclarations de fonction , il stocke également paramètres formels et objet arguments, et est appelé l'objet d'activation .

[..] lors de l'accès à un code this, sa valeur est prise directement à partir de la contexte d'exécution sans portée à chaîne recherche.

Il est plus exact de dire qu'un objet d'activation est un type d'objet variable. Ceci est similaire à la façon dont un homme est un type de HUMAINE. Comme indiqué , le terme « objet variable » est juste un GENERALISEE terme utilisé pour décrire un objet qui contient les propriétés qui décrivent l'environnement et la portée du contexte en cours d'exécution.

Par conséquent, dans le contexte global d'exécution (par exemple, en dehors de toutes les fonctions), il finit par être l'objet global. Pourquoi? Parce qu'il est l'objet qui contient les propriétés qui décrivent l'environnement et la portée du contexte global d'exécution.

considérant que, dans la fonction contexte local d'exécution (c.-à-dans une fonction), il est la fonction objet local (alias l'objet d'activation) qui est l'objet variable, car il est l'objet qui contient les propriétés qui décrivent l'environnement et la portée de la fonction en cours d'exécution. Les propriétés telles que les arguments de fonction par exemple.

Un objet activé signifie simplement un objet qui représente un élément d'une page Web que l'événement a eu lieu suite. Donc, si une image est cliqué, l'objet JavaScript qui représente cette image est l'objet activé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top