Primeiramente, deve-se dizer que o ponto disso não pode ser determinado quando a função é definida, somente quando a função é executada pode ser determinado para quem isso aponta, de fato, o ponto final disso é o objeto que a chama (há alguns problemas com esta frase, e será explicado mais adiante por que há um problema, embora a maioria dos artigos na Internet diga isso, embora em muitos casos não haja problema com essa compreensão, mas na verdade essa compreensão é imprecisa, Então, quando você entende isso, vai sentir que não compreende), então vou explorar essa questão em profundidade.
O teste é o seguinte:
Isso tem valores diferentes para diferentes propósitos de função. Em geral, este é o objeto de ambiente no qual a função se executa. O uso disso é discutido em detalhes em quatro situações.
Caso 1: Chamadas puras de função
Este é o uso mais comum de uma função, e é uma chamada global, então representa um objeto global. Veja o código abaixo, ele roda com um resultado de 1.
Caso 2: Chamar como método objeto
A função também pode ser chamada de método de um objeto, caso em que se refere ao objeto pai.
Caso 3 Chamada como construtor
O chamado construtor é que, por meio dessa função, um novo objeto pode ser gerado. Neste ponto, isso se refere a esse novo objeto.
O resultado da sequência é 1. Para mostrar que este não é um objeto global neste momento, fazemos algumas alterações no código:
O resultado da execução é 2, indicando que o valor da variável global x não mudou em nada.
Caso 4 aplicar chamada
apply() é um método de uma função que altera o objeto que chama a função. Seu primeiro parâmetro representa o objeto alterado que chama a função. Portanto, isso se refere a este primeiro parâmetro.
Quando o parâmetro apply() está vazio, o objeto global é chamado por padrão. Portanto, o resultado da execução é 0, provando que isso se refere ao objeto global.
Se você mudar a última linha de código para
O resultado contínuo torna-se 1, provando que isso representa o objeto obj.
(Fim)
Referência:
O login do hiperlink está visível.
O login do hiperlink está visível.
|