Este es el primer artículo de una serie que estoy haciendo que se centra en aprender lo que this
realmente está en JS. Para determinar correctamente a qué se une this
, primero debemos comprender algunos conceptos básicos que necesitaremos al determinar el enlace this
en JS y saber cuál es el sitio de llamada de una función es uno de esos conceptos cruciales.
Antes de sumergirnos en LO que es el sitio de llamada de una función, primero intentemos entender POR QUÉ necesitamos conocer el sitio de llamada en primer lugar. Las razones son las siguientes:
- Es probablemente algo muy fácil de ‘site’ en un fragmento de código. Sin embargo, a veces, ciertos patrones de codificación pueden ocultar el sitio de llamada real. Por lo tanto, para eliminar toda ambigüedad relacionada con este tema, debe comprender el sitio de llamadas (muy claramente).
- Es lo único que importa si quieres entender cómo funciona el enlace
this
.
Dicho esto, ahora entendamos el sitio de llamada de una función.
Generalmente, el sitio de llamada de una función es ‘el lugar desde donde se llama a una función en particular en un fragmento de código dado’. Por lo tanto, vaya a esa ubicación y sabrá dónde está el sitio de llamada de esa función.
Vamos ahora, a través de la siguiente fragmento de código, lugar donde la llamada-los sitios de las funciones son:
Eso fue fácil! Pero hay un pequeño problema con esta forma de encontrar el sitio de la llamada: a veces, puede ser difícil detectarlo manualmente (por ejemplo: ¡imagine 1000 líneas de código y tenga que encontrar el sitio de la llamada manualmente!).
Aquí es donde entra en juego la pila de llamadas. ¿Qué es una pila de llamadas? Es una pila (como su nombre indica). De qué? De funciones. ¿Qué funciones? De todas las funciones que se invocaron. Para qué? Para llegar a donde se encuentra en este momento en su ejecución (es decir, el momento actual de la ejecución).
Si observa su pila de llamadas, entonces el sitio de llamadas real está DENTRO de la invocación de la función ANTES DE la función que se está ejecutando actualmente.
Ahora, vamos a usar la pila de llamadas para encontrar la llamada-los sitios de funciones en el mismo código utilizado anteriormente:
CONSEJO RÁPIDO: En lugar de averiguar manualmente el orden en el que se invocaron las funciones (es propenso a errores y tedioso), debe usar la herramienta de depuración en su navegador para ver la pila de llamadas. El depurador se detendrá en la línea que establezca su punto de interrupción y le mostrará la pila de llamadas, es decir, le mostrará todas las funciones que se invocaron para llegar a esa ubicación en código. Por lo tanto, el sitio de llamada real es la segunda función desde arriba en esta pila de llamadas (es decir, DENTRO de la invocación de la función ANTES DE la función que se está ejecutando actualmente).
Por lo tanto, puede encontrar el sitio de llamada de una función de 2 maneras:
- detectando manualmente la ubicación en la que se invocó la función en un fragmento de código dado, o
- mirando la pila de llamadas (preferiblemente utilizando herramientas de depuración).
En caso de duda (y en general también), utilice siempre la pila de llamadas para identificar correctamente el sitio de llamada de una función.
Eso es todo! ¡Esto es todo lo que necesita saber para encontrar el sitio de llamada de una función!
Próximos pasos:
El siguiente artículo de esta serie, JavaScript: Aprende ‘esto’ – ¿qué es un CONSTRUCTOR de todos modos?, se centra en la comprensión de los constructores en JS.
Gracias por leer. 🙂