En primer lugar, hay que decir que el sentido de esto no puede determinarse cuando se define la función, solo cuando se ejecuta la función se puede determinar a quién apunta; de hecho, el punto final de esto es el objeto que la llama (hay algunos problemas con esta frase, y se explicará más adelante por qué hay un problema, aunque la mayoría de los artículos en Internet lo dicen, aunque en muchos casos no habrá problema con esa comprensión, pero en realidad esa comprensión es inexacta, Así que cuando entiendas esto, sentirás incomprensión), así que exploraré este tema en profundidad.
La prueba es la siguiente:
Esto tiene valores diferentes para distintos propósitos de funciones. En general, este es el objeto de entorno en el que se ejecuta la función. El uso de esto se discute en detalle en cuatro situaciones.
Caso 1: Llamadas a funciones puras
Este es el uso más común de una función, y es una llamada global, por lo que representa un objeto global. Mira el código de abajo, funciona con un resultado de 1.
Caso 2: Llamada como método objeto
La función también puede llamarse método de un objeto, en cuyo caso se refiere al objeto padre.
Caso 3 Llamada como constructor
El llamado constructor es que, a través de esta función, se puede generar un nuevo objeto. En este punto, esto se refiere a este nuevo objeto.
El resultado de la carrera es 1. Para demostrar que este no es un objeto global en este momento, hacemos algunos cambios en el código:
El resultado de la ejecución es 2, lo que indica que el valor de la variable global x no ha cambiado en absoluto.
Caso 4 aplicar llamada
apply() es un método de una función que cambia el objeto que llama la función. Su primer parámetro representa el objeto modificado que llama a la función. Por lo tanto, esto se refiere a este primer parámetro.
Cuando el parámetro apply() está vacío, el objeto global se llama por defecto. Por lo tanto, el resultado de la secuencia es 0, demostrando que esto se refiere al objeto global.
Si cambias la última línea de código a
El resultado secuencia se convierte en 1, demostrando que esto representa el objeto obj.
(Fin)
Referencia:
El inicio de sesión del hipervínculo es visible.
El inicio de sesión del hipervínculo es visible.
|