1
00:00:01,200 --> 00:00:02,330
La esta palabra clave,

2
00:00:02,330 --> 00:00:05,340
es un concepto extremadamente importante para entender

3
00:00:05,340 --> 00:00:06,770
en JavaScript.

4
00:00:06,770 --> 00:00:10,490
Y muchos principiantes, lo encuentran especialmente difícil.

5
00:00:10,490 --> 00:00:11,530
Pero no te preocupes,

6
00:00:11,530 --> 00:00:14,730
En realidad no es tan difícil si sabes exactamente

7
00:00:14,730 --> 00:00:16,733
cómo funciona esta palabra clave.

8
00:00:18,720 --> 00:00:22,180
Entonces, esta palabra clave o esta variable

9
00:00:22,180 --> 00:00:24,710
es básicamente una variable especial que

10
00:00:24,710 --> 00:00:28,160
se crea para cada contexto de ejecución

11
00:00:28,160 --> 00:00:30,800
y por lo tanto cualquier función.

12
00:00:30,800 --> 00:00:33,540
De hecho, aprendimos antes que es uno

13
00:00:33,540 --> 00:00:35,110
de los tres componentes

14
00:00:35,110 --> 00:00:37,450
de cualquier contexto de ejecución,

15
00:00:37,450 --> 00:00:41,080
junto con el entorno variable y la cadena de alcance

16
00:00:41,080 --> 00:00:42,200
que ya aprendimos

17
00:00:42,200 --> 00:00:44,070
sobre antes

18
00:00:44,070 --> 00:00:46,780
Ahora, en términos generales, la palabra clave this,

19
00:00:46,780 --> 00:00:49,420
siempre tomará el valor del dueño

20
00:00:49,420 --> 00:00:53,860
de la función en la que se utiliza la palabra clave this.

21
00:00:53,860 --> 00:00:58,230
También decimos que apunta al propietario de esa función.

22
00:00:58,230 --> 00:01:00,590
Y eso suena muy abstracto.

23
00:01:00,590 --> 00:01:03,840
pero veremos lo que eso significa en un segundo.

24
00:01:03,840 --> 00:01:07,040
Por ahora, lo que es muy importante entender

25
00:01:07,040 --> 00:01:09,810
es que el valor de esta palabra clave

26
00:01:09,810 --> 00:01:11,690
no es estático.

27
00:01:11,690 --> 00:01:14,120
Entonces no siempre es lo mismo.

28
00:01:14,120 --> 00:01:16,060
Depende de cómo la función

29
00:01:16,060 --> 00:01:17,560
en realidad se llama.

30
00:01:17,560 --> 00:01:20,581
Y su valor solo se asigna cuando la función

31
00:01:20,581 --> 00:01:23,190
en realidad se llama.

32
00:01:23,190 --> 00:01:24,540
entonces es muy diferente

33
00:01:24,540 --> 00:01:25,910
de un valor normal,

34
00:01:25,910 --> 00:01:27,023
A este respecto.

35
00:01:27,930 --> 00:01:29,560
si ponemos, por ejemplo,

36
00:01:29,560 --> 00:01:31,110
X a cinco,

37
00:01:31,110 --> 00:01:34,370
entonces X siempre será solo cinco.

38
00:01:34,370 --> 00:01:36,530
Pero esta palabra clave de nuevo,

39
00:01:36,530 --> 00:01:40,560
depende de la forma en que se llame a una función.

40
00:01:40,560 --> 00:01:43,320
Pero, ¿qué significa eso realmente?

41
00:01:43,320 --> 00:01:46,380
Bueno, analicemos cuatro formas diferentes

42
00:01:46,380 --> 00:01:48,540
en el que se pueden llamar funciones.

43
00:01:48,540 --> 00:01:51,840
Y la primera forma de llamar a una función es

44
00:01:51,840 --> 00:01:53,290
como método.

45
00:01:53,290 --> 00:01:57,100
Entonces, como una función adjunta a un objeto.

46
00:01:57,100 --> 00:02:00,700
Entonces, cuando llamamos a un método, la palabra clave this dentro

47
00:02:00,700 --> 00:02:03,810
ese método simplemente apuntará al objeto

48
00:02:03,810 --> 00:02:06,610
en el que se llama al método,

49
00:02:06,610 --> 00:02:08,220
o en otras palabras,

50
00:02:08,220 --> 00:02:10,210
apunta al objeto que

51
00:02:10,210 --> 00:02:12,180
está llamando al método.

52
00:02:12,180 --> 00:02:13,290
¿Bueno?

53
00:02:13,290 --> 00:02:14,750
Y así vamos a ilustrar esto

54
00:02:14,750 --> 00:02:16,353
con un ejemplo sencillo.

55
00:02:17,230 --> 00:02:18,600
Así que el método aquí

56
00:02:18,600 --> 00:02:21,480
es el método calcAge, de nuevo,

57
00:02:21,480 --> 00:02:25,810
porque es una función adjunta al objeto Jonas.

58
00:02:25,810 --> 00:02:27,300
en la última línea aquí,

59
00:02:27,300 --> 00:02:29,030
entonces llamamos al método

60
00:02:29,030 --> 00:02:30,330
y como ves

61
00:02:30,330 --> 00:02:31,770
dentro del método,

62
00:02:31,770 --> 00:02:34,260
usamos la palabra clave this.

63
00:02:34,260 --> 00:02:36,820
Ahora, de acuerdo con lo que acabamos de aprender,

64
00:02:36,820 --> 00:02:38,330
cual debe ser el valor

65
00:02:38,330 --> 00:02:40,610
de la esta palabra clave aquí?

66
00:02:40,610 --> 00:02:41,850
Y eso es correcto,

67
00:02:41,850 --> 00:02:45,450
debería ser Jonas, porque ese es el objeto que

68
00:02:45,450 --> 00:02:47,750
está llamando al método allí abajo

69
00:02:47,750 --> 00:02:49,030
en la última línea.

70
00:02:49,030 --> 00:02:50,230
¿no es así?

71
00:02:50,230 --> 00:02:53,590
Y entonces, en Jonas, por supuesto podemos acceder

72
00:02:53,590 --> 00:02:55,810
todas las propiedades que tiene.

73
00:02:55,810 --> 00:03:00,360
Y así, este.año se convertirá en 1989,

74
00:03:00,360 --> 00:03:04,620
porque ese es Jonas.year también.

75
00:03:04,620 --> 00:03:05,980
Entonces, en este caso,

76
00:03:05,980 --> 00:03:07,600
escribiendo 'Jonas.año'

77
00:03:07,600 --> 00:03:09,820
tendría exactamente el mismo efecto

78
00:03:09,820 --> 00:03:11,750
como 'este.año'.

79
00:03:11,750 --> 00:03:13,350
Pero hacerlo de esta manera

80
00:03:13,350 --> 00:03:15,560
es una solución mucho mejor,

81
00:03:15,560 --> 00:03:17,980
por muchas razones que entraremos en

82
00:03:17,980 --> 00:03:19,860
A lo largo del curso.

83
00:03:19,860 --> 00:03:21,030
Y jugaremos

84
00:03:21,030 --> 00:03:22,860
con este ejemplo un poco mas

85
00:03:22,860 --> 00:03:24,582
en el siguiente vídeo.

86
00:03:24,582 --> 00:03:28,130
Pero de todos modos, otra forma de llamar funciones

87
00:03:28,130 --> 00:03:29,750
es simplemente llamándolos

88
00:03:29,750 --> 00:03:31,470
como funciones normales.

89
00:03:31,470 --> 00:03:36,470
Por lo tanto, no como un método y, por lo tanto, no adjunto a ningún objeto.

90
00:03:37,120 --> 00:03:38,040
En este caso,

91
00:03:38,040 --> 00:03:39,050
la esta palabra clave,

92
00:03:39,050 --> 00:03:41,560
será simplemente indefinido.

93
00:03:41,560 --> 00:03:45,430
Sin embargo, eso solo es válido para el modo estricto.

94
00:03:45,430 --> 00:03:47,740
Entonces, si no estás en modo estricto,

95
00:03:47,740 --> 00:03:49,290
esto realmente apuntará

96
00:03:49,290 --> 00:03:50,560
al objeto global,

97
00:03:50,560 --> 00:03:52,700
que en el caso del navegador

98
00:03:52,700 --> 00:03:54,920
es el objeto ventana.

99
00:03:54,920 --> 00:03:57,420
Y eso puede ser muy problemático.

100
00:03:57,420 --> 00:03:58,253
y entonces,

101
00:03:58,253 --> 00:04:00,430
esta es otra muy buena razón

102
00:04:00,430 --> 00:04:02,733
usar siempre el modo estricto.

103
00:04:03,600 --> 00:04:06,150
A continuación, tenemos funciones de flecha.

104
00:04:06,150 --> 00:04:07,930
y mientras la flecha funciona

105
00:04:07,930 --> 00:04:09,632
no son exactamente una manera

106
00:04:09,632 --> 00:04:11,610
de funciones de llamada.

107
00:04:11,610 --> 00:04:13,670
Es un tipo importante de función.

108
00:04:13,670 --> 00:04:15,450
que tenemos que considerar,

109
00:04:15,450 --> 00:04:19,620
porque, recuerda, las funciones de flecha no tienen sus propias

110
00:04:19,620 --> 00:04:21,120
'esta palabra clave'.

111
00:04:21,120 --> 00:04:23,720
En cambio, si usa 'esta variable'

112
00:04:23,720 --> 00:04:25,200
en una función de flecha,

113
00:04:25,200 --> 00:04:27,310
simplemente será la palabra clave this

114
00:04:27,310 --> 00:04:29,400
de la función circundante.

115
00:04:29,400 --> 00:04:31,600
Entonces de la función padre

116
00:04:31,600 --> 00:04:33,070
y en términos técnicos,

117
00:04:33,070 --> 00:04:36,230
esto se llama la 'palabra clave léxica esta',

118
00:04:36,230 --> 00:04:38,550
porque simplemente se recoge

119
00:04:38,550 --> 00:04:40,860
del ámbito léxico externo

120
00:04:40,860 --> 00:04:43,130
de la función flecha.

121
00:04:43,130 --> 00:04:46,770
Así que nunca olvides esta propiedad tan importante

122
00:04:46,770 --> 00:04:48,420
de funciones de flecha.

123
00:04:48,420 --> 00:04:51,060
Créeme que en realidad me encuentro

124
00:04:51,060 --> 00:04:52,310
uno o dos errores

125
00:04:52,310 --> 00:04:54,370
debido a este comportamiento.

126
00:04:54,370 --> 00:04:55,203
¿Bueno?

127
00:04:55,203 --> 00:04:57,480
Así que es muy importante no olvidar

128
00:04:57,480 --> 00:05:00,170
que las funciones de flecha no tienen sus propias

129
00:05:00,170 --> 00:05:01,157
'esta palabra clave.'

130
00:05:02,170 --> 00:05:03,003
Bueno.

131
00:05:03,003 --> 00:05:05,910
Y por último, si se llama a una función

132
00:05:05,910 --> 00:05:07,700
como oyente de eventos,

133
00:05:07,700 --> 00:05:10,250
entonces esta palabra clave siempre apuntará

134
00:05:10,250 --> 00:05:11,381
al elemento DOM

135
00:05:11,381 --> 00:05:14,960
a la que se adjunta la función de controlador.

136
00:05:14,960 --> 00:05:17,093
Muy sencillo ¿verdad?

137
00:05:17,960 --> 00:05:19,140
Ahora, esta palabra clave

138
00:05:19,140 --> 00:05:20,980
suele ser una gran fuente

139
00:05:20,980 --> 00:05:23,120
de confusión para los principiantes.

140
00:05:23,120 --> 00:05:25,130
Pero si conoces estas reglas,

141
00:05:25,130 --> 00:05:27,920
entonces será mucho más simple

142
00:05:27,920 --> 00:05:29,780
y para hacerlo aún más simple.

143
00:05:29,780 --> 00:05:31,460
También es importante saber

144
00:05:31,460 --> 00:05:34,470
qué, esta palabra clave no es.

145
00:05:34,470 --> 00:05:37,880
Así que esto nunca apuntará a la función.

146
00:05:37,880 --> 00:05:40,090
en que lo estamos usando.

147
00:05:40,090 --> 00:05:42,860
Además, esta palabra clave nunca señalará

148
00:05:42,860 --> 00:05:44,590
al entorno variable

149
00:05:44,590 --> 00:05:46,180
de la función

150
00:05:46,180 --> 00:05:49,050
Y estos son dos conceptos erróneos bastante comunes.

151
00:05:49,050 --> 00:05:51,670
y por eso me dirijo a ellos aquí.

152
00:05:51,670 --> 00:05:52,700
¿Bueno?

153
00:05:52,700 --> 00:05:55,240
Así que de nuevo, las reglas que te mostré aquí

154
00:05:55,240 --> 00:05:57,740
es todo lo que necesitas saber.

155
00:05:57,740 --> 00:05:58,573
Está bien.

156
00:05:58,573 --> 00:06:01,400
Y ahora solo por el bien de la finalización,

157
00:06:01,400 --> 00:06:03,330
en realidad hay otras formas

158
00:06:03,330 --> 00:06:05,790
en la que podemos llamar a una función,

159
00:06:05,790 --> 00:06:06,623
Por ejemplo,

160
00:06:06,623 --> 00:06:10,040
usando la nueva palabra clave o la llamada aplicar

161
00:06:10,040 --> 00:06:12,110
y enlazar métodos,

162
00:06:12,110 --> 00:06:15,100
pero aún no sabemos cuáles son.

163
00:06:15,100 --> 00:06:17,590
Entonces, hablaré sobre cómo esta palabra clave

164
00:06:17,590 --> 00:06:18,950
trabaja con ellos,

165
00:06:18,950 --> 00:06:21,210
Cuando llegue el momento.

166
00:06:21,210 --> 00:06:24,170
De todos modos, eso es todo por esta conferencia.

167
00:06:24,170 --> 00:06:26,180
Así que ahora usemos esto en la práctica.

168
00:06:26,180 --> 00:06:27,583
para que quede claro como el cristal.