Ahora veamos qué pasa cuando traemos la palabra clave de esta forma a la mezcla.
Aquí es donde las cosas se divierten en el primer bloque de código.
Tenemos un método llamado Say hi, que es una función que llama a un tiempo de espera establecido y cancelado,
registra la cadena concatenada con el valor de la propiedad del primer nombre en la palabra clave.
Esto antes de que veamos qué devuelve este código.
Haga una pausa en el video y piense a qué se refiere la palabra clave.
Volver a las dos primeras reglas es la palabra clave esto en el contexto global.
O es la palabra clave esto dentro de un objeto declarado.
Usted podría estar pensando que está claramente dentro de un objeto declarado y tiene razón.
Sin embargo, dado que el tiempo de espera establecido se llama en un momento posterior en el tiempo la palabra clave esto no
se refiere al objeto principal.
En realidad se refiere al objeto global.
Esto es muy complicado y hace tropezar a muchos principiantes.
Así que caminemos de nuevo ya que el tiempo de espera establecido se llama en un momento posterior.
el tiempo de espera es un método en el objeto ventana aunque esté definido dentro del objeto
frío cuando se declara que el contexto en el que se ejecuta la función es realmente el global contexto.
El objeto al que está adjunto es en realidad la ventana tal como lo dijimos antes de establecer
Entonces, ¿cómo podemos resolver este problema ya que estamos perdiendo el contexto correcto de la palabra clave?
Esto deberíamos establecer explícitamente, pero queremos que la palabra clave a la que se refiere esto.
Podemos hacer esto usando call y apply, pero dado que queremos llamar a la función en un momento
posterior, no queremos usar ninguna de esas opciones.
Recuerde que llamar y aplicar invocar la función de inmediato.
Hacerlo así frustraría el propósito de un tiempo de espera establecido que es para ejecutar una función en
un momento posterior.
Entonces, eso nos deja con bind en el segundo bloque de código, podemos resolver nuestro problema pasando como
primer parámetro al método bind.
El valor al que queremos que se refiera la palabra clave a la que se refiere puede ser totalmente confuso en cuanto a por qué
pasamos en la palabra clave esto como el primer parámetro.
Pero retroceda un paso y pregúntese dentro del objeto de código a qué se refiere la palabra clave.
Bueno, en realidad se refiere al objeto de culto en sí.
de la palabra clave que esto es lo que queremos cuando se llama a la función dentro del tiempo de espera establecido en
lugar de la palabra clave que puede pasar en la variable llamada al método de vinculación y obtendrá el mismo resultado.
Por lo tanto, vinculamos el valor correcto
Pero más comúnmente verá código que usa la palabra clave this.
Para recapitular, vimos que el método bind devuelve una definición de función a diferencia de call an apply
y es muy útil para establecer el valor de la palabra clave this cuando no conocemos todos los
valores para que los argumentos pasen a la función o cuando trabajamos con código asíncrono.
Una nota final.
El material que cubrimos aquí es bastante avanzado.
producción, y también te preguntarán en las entrevistas si todavía estás bastante desconcertado con este ejemplo.
Pero si estás buscando convertirte en un desarrollador de javascript profesional, este es el tipo de código que verás en las
bases de códigos de
No te preocupes
He enseñado mucho este tema y siempre es algo que confunde a las personas al principio, al tratar de
recorrer cada línea de código y asegurarse de escribir los ejemplos en la consola de Chrome para ver qué sucede.
Como siempre, siéntete libre de hacer esas preguntas.
Estamos aquí para ayudarlo a aprender en el próximo video.
Vamos a cubrir brevemente la última regla para determinar la palabra clave así que