# 2.1 Sitio de llamada

Para entender la vinculación `this`, tenemos que entender el call-site: la ubicación en el código donde se llama una función (**no donde se declara**). Tenemos que inspeccionar el sitio de llamada para responder a la pregunta: ¿es `this` una referencia?

Encontrar el sitio de llamada se trata generalmente: "de ir a localizar desde donde se llama una función", pero no siempre es tan fácil, ya que ciertos patrones de codificación pueden oscurecer el verdadero sitio de llamada.

Lo importante es pensar en la pila de llamadas (la pila de funciones que se han llamado para llegar al momento actual en ejecución). El sitio de llamada que nos interesa es en la invocación antes de la función en ejecución.

Vamos a demostrar call-stack y call-site:

```javascript
function baz() {
    // call-stack es: `baz`
    // así, nuestro sitio de llamada está en el ámbito global

    console.log( "baz" );
    bar(); // <-- call-site para `bar`
}

function bar() {
    // call-stack es: `baz` -> `bar`
    // así, nuestro sitio de llamada está en `baz`

    console.log( "bar" );
    foo(); // <-- call-site para `foo`
}

function foo() {
    // call-stack es: `baz` -> `bar` -> `foo`
    // asi, nuestro sitio de llamada esta en `bar`

    console.log( "foo" );
}

baz(); // <-- call-site para `baz`
```

Tenga cuidado al analizar el código para encontrar el sitio de llamada real (desde la pila de llamadas), porque es lo único que importa para el enlace de `this`.

**Nota**: Puede visualizar una pila de llamadas en su mente mirando la cadena de llamadas de función en orden, como hicimos con los comentarios en el fragmento anterior. Pero esto es laborioso y propenso a errores. Otra forma de ver la pila de llamadas es usar una herramienta de depuración en su navegador. La mayoría de los navegadores de escritorio modernos incorporan herramientas de desarrollo, que incluyen un depurador JS. En el fragmento anterior, podría haber establecido un punto de interrupción en las herramientas para la primera línea de la función `foo()` o simplemente insertado el `debugger`; en la declaración de esa primera línea. Al ejecutar la página, el depurador se detendrá en esta ubicación y le mostrará una lista de las funciones que se han llamado para llegar a esa línea, que será la pila de llamadas. Por lo tanto, si está intentando diagnosticar la vinculación de `this`, utilice las herramientas de desarrollador para obtener la pila de llamadas y, a continuación, busque el segundo elemento desde la parte superior y se mostrará el sitio de llamada real.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://daniel-morales.gitbook.io/javascript-avanzado-en-espanol/iii-this-and-object-prototypes/2-this-todo-tiene-sentido-ahora/21-sitio-de-llamada.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
