1
00:00:00,570 --> 00:00:03,970
Ahora veamos qué pasa cuando traemos la palabra clave de esta forma a la mezcla.

2
00:00:04,170 --> 00:00:06,980
Aquí es donde las cosas se divierten en el primer bloque de código.

3
00:00:07,020 --> 00:00:12,810
Tenemos un método llamado Say hi, que es una función que llama a un tiempo de espera establecido y cancelado,

4
00:00:12,810 --> 00:00:17,740
registra la cadena concatenada con el valor de la propiedad del primer nombre en la palabra clave.

5
00:00:17,820 --> 00:00:21,100
Esto antes de que veamos qué devuelve este código.

6
00:00:21,150 --> 00:00:24,740
Haga una pausa en el video y piense a qué se refiere la palabra clave.

7
00:00:24,780 --> 00:00:28,550
Volver a las dos primeras reglas es la palabra clave esto en el contexto global.

8
00:00:28,710 --> 00:00:32,280
O es la palabra clave esto dentro de un objeto declarado.

9
00:00:32,280 --> 00:00:36,480
Usted podría estar pensando que está claramente dentro de un objeto declarado y tiene razón.

10
00:00:36,750 --> 00:00:42,960
Sin embargo, dado que el tiempo de espera establecido se llama en un momento posterior en el tiempo la palabra clave esto no

11
00:00:42,960 --> 00:00:44,310
se refiere al objeto principal.

12
00:00:44,310 --> 00:00:47,100
En realidad se refiere al objeto global.

13
00:00:47,100 --> 00:00:50,060
Esto es muy complicado y hace tropezar a muchos principiantes.

14
00:00:50,160 --> 00:00:55,470
Así que caminemos de nuevo ya que el tiempo de espera establecido se llama en un momento posterior.

15
00:00:55,590 --> 00:01:01,350
el tiempo de espera es un método en el objeto ventana aunque esté definido dentro del objeto

16
00:01:01,350 --> 00:01:07,920
frío cuando se declara que el contexto en el que se ejecuta la función es realmente el global contexto.

17
00:01:07,920 --> 00:01:13,960
El objeto al que está adjunto es en realidad la ventana tal como lo dijimos antes de establecer

18
00:01:13,980 --> 00:01:18,000
Entonces, ¿cómo podemos resolver este problema ya que estamos perdiendo el contexto correcto de la palabra clave?

19
00:01:18,010 --> 00:01:22,220
Esto deberíamos establecer explícitamente, pero queremos que la palabra clave a la que se refiere esto.

20
00:01:22,590 --> 00:01:27,810
Podemos hacer esto usando call y apply, pero dado que queremos llamar a la función en un momento

21
00:01:28,260 --> 00:01:30,510
posterior, no queremos usar ninguna de esas opciones.

22
00:01:30,570 --> 00:01:33,600
Recuerde que llamar y aplicar invocar la función de inmediato.

23
00:01:33,660 --> 00:01:38,640
Hacerlo así frustraría el propósito de un tiempo de espera establecido que es para ejecutar una función en

24
00:01:38,640 --> 00:01:39,620
un momento posterior.

25
00:01:39,960 --> 00:01:46,080
Entonces, eso nos deja con bind en el segundo bloque de código, podemos resolver nuestro problema pasando como

26
00:01:46,080 --> 00:01:47,700
primer parámetro al método bind.

27
00:01:47,700 --> 00:01:53,640
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é

28
00:01:53,640 --> 00:01:56,010
pasamos en la palabra clave esto como el primer parámetro.

29
00:01:56,160 --> 00:02:01,950
Pero retroceda un paso y pregúntese dentro del objeto de código a qué se refiere la palabra clave.

30
00:02:02,850 --> 00:02:06,140
Bueno, en realidad se refiere al objeto de culto en sí.

31
00:02:06,240 --> 00:02:12,450
de la palabra clave que esto es lo que queremos cuando se llama a la función dentro del tiempo de espera establecido en

32
00:02:12,450 --> 00:02:18,150
lugar de la palabra clave que puede pasar en la variable llamada al método de vinculación y obtendrá el mismo resultado.

33
00:02:18,150 --> 00:02:20,160
Por lo tanto, vinculamos el valor correcto

34
00:02:20,400 --> 00:02:24,790
Pero más comúnmente verá código que usa la palabra clave this.

35
00:02:24,900 --> 00:02:30,600
Para recapitular, vimos que el método bind devuelve una definición de función a diferencia de call an apply

36
00:02:30,600 --> 00:02:36,300
y es muy útil para establecer el valor de la palabra clave this cuando no conocemos todos los

37
00:02:36,300 --> 00:02:41,060
valores para que los argumentos pasen a la función o cuando trabajamos con código asíncrono.

38
00:02:41,070 --> 00:02:42,300
Una nota final.

39
00:02:42,390 --> 00:02:44,960
El material que cubrimos aquí es bastante avanzado.

40
00:02:45,150 --> 00:02:48,900
producción, y también te preguntarán en las entrevistas si todavía estás bastante desconcertado con este ejemplo.

41
00:02:48,900 --> 00:02:53,910
Pero si estás buscando convertirte en un desarrollador de javascript profesional, este es el tipo de código que verás en las

42
00:02:53,910 --> 00:02:54,920
bases de códigos de

43
00:02:54,930 --> 00:02:55,710
No te preocupes

44
00:02:55,830 --> 00:03:00,570
He enseñado mucho este tema y siempre es algo que confunde a las personas al principio, al tratar de

45
00:03:00,600 --> 00:03:05,580
recorrer cada línea de código y asegurarse de escribir los ejemplos en la consola de Chrome para ver qué sucede.

46
00:03:05,760 --> 00:03:07,950
Como siempre, siéntete libre de hacer esas preguntas.

47
00:03:07,950 --> 00:03:10,600
Estamos aquí para ayudarlo a aprender en el próximo video.

48
00:03:10,740 --> 00:03:15,060
Vamos a cubrir brevemente la última regla para determinar la palabra clave así que
