O que é um objeto de Ativação em JavaScript?

13

Em um determinado contexto de execução, o objeto Variável é o objeto de Ativação desse contexto de execução.

Na minha pesquisa on-line, sou capaz de encontrar a frase anterior reformulada de maneiras diferentes, mas ninguém é capaz de dizer o que é.

O que é um objeto de Ativação?

rsman
fonte
Um objeto de ativação é o objeto mais alto em uma cadeia de escopo, sendo o mais baixo o objeto global . Veja esta resposta para mais detalhes.
precisa saber é

Respostas:

17

Deixe-me começar pelas raízes ...

O contexto de execução é um objeto que consiste em:

  • objeto variável, que é objeto de ativação no caso de funções
  • cadeia de escopo, que você pode considerar uma lista vinculada de escopos externos
  • this valor

Objeto variável é uma coisa abstrata, que pode ser uma das seguintes:

  • objeto global (no contexto global) - o lugar onde vars globais (como window, documentou consoleem um navegador) residem
  • objeto de ativação (para funções que definem escopos no ECMAScript)

Objeto de ativação é um objeto que contém:

  • args formais da função
  • arguments objeto para esta função
  • quaisquer vars e funções (nomeadas) dentro desta função

Portanto, o objeto de ativação é apenas um caso especial de objeto variável.

É basicamente um contêiner para todo o material local que você pode acessar pelo nome dentro de uma função, exceto this. Posso ser impreciso aqui, mas é o que penso que é.

Mais explicações com algumas fotos legais:

scriptin
fonte
2

Um objeto de Ativação é o objeto usado para armazenar as propriedades que descrevem o ambiente e o escopo de uma função de execução. É nesse objeto que argumentos de função, por exemplo, são armazenados. Por definição, ATIVAR algo é fazer com que algo aja ou FUNCIONE. Portanto, quando você ouvir 'Objeto de ativação', pense no objeto 'FUNCTION' ou, melhor ainda, no objeto raiz que é LOCAL para uma função (ou seja, o OBJETO LOCAL DA FUNÇÃO).

Com relação ao objeto Variable, um objeto Activation é mais ou menos uma instância concreta de um objeto Variable, que é ele próprio (referindo-se ao objeto Variable aqui) um tipo de objeto ABSTRACT. Como indicado aqui ...

O termo 'objeto variável' é um termo geral ou abstrato usado para se referir a qualquer objeto que contém as propriedades que descrevem o ambiente e o escopo do contexto em execução no momento.

Portanto, dentro do ambiente e escopo do contexto de execução global (ou seja, quando está fora de uma função), o objeto Global é o objeto Variável. No navegador, como o ambiente de execução global ou mais externo é o WINDOW do navegador, é o windowobjeto que acaba sendo usado como o objeto Variável. É por isso que variáveis ​​declaradas com a varpalavra - chave fora das funções acabam no windowobjeto.

No escopo de uma função, no entanto, é o objeto de Ativação (ou seja, o objeto local da função) que é o objeto variável, pois é esse objeto usado para armazenar as propriedades que descrevem o escopo de uma função em execução.

ify.io
fonte