2999a commited on
Commit
5391491
verified
1 Parent(s): 13cc699

Upload batch from C CLI

Browse files

Uploaded via hf-downloader C client

This view is limited to 50 files because it contains too many changes. 聽 See raw diff
Files changed (50) hide show
  1. .gitattributes +23 -0
  2. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/04-Resumen.html +0 -0
  3. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-Lecturas recomendadas.txt +1 -0
  4. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-Programaci贸n Orientada a Objetos en JavaScript Clases y Prototipos.mp4 +3 -0
  5. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-Programaci贸n Orientada a Objetos en JavaScript Clases y Prototipos.vtt +178 -0
  6. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-Resumen.html +0 -0
  7. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-index_23e34316-5be6-49e9-b2bf-a78e5c48b1f7.js +40 -0
  8. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-Lecturas recomendadas.txt +1 -0
  9. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-Prototipos y Herencia en JavaScript Construcci贸n y Uso Pr谩ctico.mp4 +3 -0
  10. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-Prototipos y Herencia en JavaScript Construcci贸n y Uso Pr谩ctico.vtt +1256 -0
  11. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-Resumen.html +0 -0
  12. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-index_384b7837-2cc2-4536-ac3b-b67f93155a03.js +40 -0
  13. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-index_6a991b46-e782-4d78-a468-526db36453e2.js +40 -0
  14. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-Lecturas recomendadas.txt +1 -0
  15. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-M茅todos y herencia protot铆pica en JavaScript.mp4 +3 -0
  16. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-M茅todos y herencia protot铆pica en JavaScript.vtt +655 -0
  17. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-Resumen.html +0 -0
  18. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-index_58862723-5875-440e-973f-d6b69b7383c9.js +40 -0
  19. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-index_f73e3a49-7ee5-4713-a9f9-2a9cc854b45c.js +40 -0
  20. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Lecturas recomendadas.txt +1 -0
  21. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Resumen.html +0 -0
  22. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Uso de this en Clases y Funciones Constructoras.mp4 +3 -0
  23. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Uso de this en Clases y Funciones Constructoras.vtt +420 -0
  24. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-index_125edb51-afc3-47ce-8f9c-070dd742b2cd.js +20 -0
  25. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-index_17803c0e-d45f-47e5-8773-08ff8a4a998d.js +20 -0
  26. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-Lecturas recomendadas.txt +1 -0
  27. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-Resumen.html +0 -0
  28. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-Validaci贸n de Usuarios en una Red Social Algoritmo B谩sico.mp4 +3 -0
  29. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-Validaci贸n de Usuarios en una Red Social Algoritmo B谩sico.vtt +1174 -0
  30. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-index_f210d63d-0f86-4336-a938-c7bdb343c5d6.js +69 -0
  31. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-Implementaci贸n de la Funci贸n SignIn y Validaci贸n de Usuario.mp4 +3 -0
  32. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-Implementaci贸n de la Funci贸n SignIn y Validaci贸n de Usuario.vtt +982 -0
  33. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-Lecturas recomendadas.txt +1 -0
  34. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-Resumen.html +0 -0
  35. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-index_5665e02f-31fe-4c5f-a003-0f6fa407346f.js +69 -0
  36. subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-index_b9edb5bd-74c5-4aa1-a1cf-31873cf62ed2.js +69 -0
  37. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Lecturas recomendadas.txt +1 -0
  38. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Programaci贸n S铆ncrona y As铆ncrona en JavaScript.mp4 +3 -0
  39. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Programaci贸n S铆ncrona y As铆ncrona en JavaScript.vtt +409 -0
  40. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Resumen.html +0 -0
  41. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Lecturas recomendadas.txt +1 -0
  42. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Promesas en JavaScript Asincron铆a y Manejo de Estados.mp4 +3 -0
  43. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Promesas en JavaScript Asincron铆a y Manejo de Estados.vtt +894 -0
  44. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Resumen.html +0 -0
  45. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-app_3fd37998-3a9c-486d-8eeb-3794a9ea8bd3.js +3 -0
  46. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Lecturas recomendadas.txt +1 -0
  47. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Resumen.html +0 -0
  48. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Uso de AsyncAwait para Promesas As铆ncronas en JavaScript.mp4 +3 -0
  49. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Uso de AsyncAwait para Promesas As铆ncronas en JavaScript.vtt +674 -0
  50. subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-app_5bc0e7ac-1f29-42b8-81f4-9ce6af240d4a.js +3 -0
.gitattributes CHANGED
@@ -259,3 +259,26 @@ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript
259
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]L贸gica/06-Ciclo[[:space:]]For[[:space:]]Iteraci贸n[[:space:]]de[[:space:]]Listas[[:space:]]y[[:space:]]Uso[[:space:]]de[[:space:]]Consolelog[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
260
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]L贸gica/07-Iteraci贸n[[:space:]]con[[:space:]]forof[[:space:]]en[[:space:]]JavaScript[[:space:]]para[[:space:]]arrays[[:space:]]y[[:space:]]strings.mp4 filter=lfs diff=lfs merge=lfs -text
261
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]L贸gica/08-Iteraci贸n[[:space:]]sobre[[:space:]]Objetos[[:space:]]con[[:space:]]forIn[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
259
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]L贸gica/06-Ciclo[[:space:]]For[[:space:]]Iteraci贸n[[:space:]]de[[:space:]]Listas[[:space:]]y[[:space:]]Uso[[:space:]]de[[:space:]]Consolelog[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
260
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]L贸gica/07-Iteraci贸n[[:space:]]con[[:space:]]forof[[:space:]]en[[:space:]]JavaScript[[:space:]]para[[:space:]]arrays[[:space:]]y[[:space:]]strings.mp4 filter=lfs diff=lfs merge=lfs -text
261
  subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/02-Estructuras[[:space:]]de[[:space:]]Control[[:space:]]y[[:space:]]L贸gica/08-Iteraci贸n[[:space:]]sobre[[:space:]]Objetos[[:space:]]con[[:space:]]forIn[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
262
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/05-Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/05-Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]en[[:space:]]JavaScript[[:space:]]Clases[[:space:]]y[[:space:]]Prototipos.mp4 filter=lfs diff=lfs merge=lfs -text
263
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/05-Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/06-Prototipos[[:space:]]y[[:space:]]Herencia[[:space:]]en[[:space:]]JavaScript[[:space:]]Construcci贸n[[:space:]]y[[:space:]]Uso[[:space:]]Pr谩ctico.mp4 filter=lfs diff=lfs merge=lfs -text
264
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/05-Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/07-M茅todos[[:space:]]y[[:space:]]herencia[[:space:]]protot铆pica[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
265
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/05-Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/08-Uso[[:space:]]de[[:space:]]this[[:space:]]en[[:space:]]Clases[[:space:]]y[[:space:]]Funciones[[:space:]]Constructoras.mp4 filter=lfs diff=lfs merge=lfs -text
266
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/05-Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/09-Validaci贸n[[:space:]]de[[:space:]]Usuarios[[:space:]]en[[:space:]]una[[:space:]]Red[[:space:]]Social[[:space:]]Algoritmo[[:space:]]B谩sico.mp4 filter=lfs diff=lfs merge=lfs -text
267
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/05-Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos/10-Implementaci贸n[[:space:]]de[[:space:]]la[[:space:]]Funci贸n[[:space:]]SignIn[[:space:]]y[[:space:]]Validaci贸n[[:space:]]de[[:space:]]Usuario.mp4 filter=lfs diff=lfs merge=lfs -text
268
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincron铆a[[:space:]]en[[:space:]]JavaScript/01-Programaci贸n[[:space:]]S铆ncrona[[:space:]]y[[:space:]]As铆ncrona[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
269
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincron铆a[[:space:]]en[[:space:]]JavaScript/02-Promesas[[:space:]]en[[:space:]]JavaScript[[:space:]]Asincron铆a[[:space:]]y[[:space:]]Manejo[[:space:]]de[[:space:]]Estados.mp4 filter=lfs diff=lfs merge=lfs -text
270
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincron铆a[[:space:]]en[[:space:]]JavaScript/03-Uso[[:space:]]de[[:space:]]AsyncAwait[[:space:]]para[[:space:]]Promesas[[:space:]]As铆ncronas[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
271
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincron铆a[[:space:]]en[[:space:]]JavaScript/04-Peticiones[[:space:]]as铆ncronas[[:space:]]con[[:space:]]for[[:space:]]await[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
272
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincron铆a[[:space:]]en[[:space:]]JavaScript/05-Fundamentos[[:space:]]de[[:space:]]HTTP[[:space:]]ClienteServidor[[:space:]]y[[:space:]]M茅todos[[:space:]]de[[:space:]]Petici贸n.mp4 filter=lfs diff=lfs merge=lfs -text
273
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincron铆a[[:space:]]en[[:space:]]JavaScript/06-Peticiones[[:space:]]HTTP[[:space:]]en[[:space:]]Frontend[[:space:]]Uso[[:space:]]de[[:space:]]Fetch[[:space:]]y[[:space:]]An谩lisis[[:space:]]en[[:space:]]Network.mp4 filter=lfs diff=lfs merge=lfs -text
274
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincron铆a[[:space:]]en[[:space:]]JavaScript/07-Peticiones[[:space:]]HTTP[[:space:]]en[[:space:]]JavaScript[[:space:]]Fetch[[:space:]]GET[[:space:]]POST[[:space:]]y[[:space:]]DELETE.mp4 filter=lfs diff=lfs merge=lfs -text
275
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincron铆a[[:space:]]en[[:space:]]JavaScript/08-Env铆o[[:space:]]de[[:space:]]Datos[[:space:]]al[[:space:]]Servidor[[:space:]]con[[:space:]]JavaScript[[:space:]]y[[:space:]]Fetch[[:space:]]API.mp4 filter=lfs diff=lfs merge=lfs -text
276
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincron铆a[[:space:]]en[[:space:]]JavaScript/09-Eliminar[[:space:]]Posts[[:space:]]con[[:space:]]JavaScript[[:space:]]y[[:space:]]Delegaci贸n[[:space:]]de[[:space:]]Eventos.mp4 filter=lfs diff=lfs merge=lfs -text
277
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincron铆a[[:space:]]en[[:space:]]JavaScript/10-Manejo[[:space:]]de[[:space:]]IDs[[:space:]]en[[:space:]]JavaScript[[:space:]]para[[:space:]]eliminar[[:space:]]art铆culos[[:space:]]del[[:space:]]DOM.mp4 filter=lfs diff=lfs merge=lfs -text
278
+ subir/Curso[[:space:]]de[[:space:]]Fundamentos[[:space:]]de[[:space:]]JavaScript/06-Asincron铆a[[:space:]]en[[:space:]]JavaScript/11-Actualizaciones[[:space:]]y[[:space:]]Nuevas[[:space:]]Funciones[[:space:]]en[[:space:]]JavaScript.mp4 filter=lfs diff=lfs merge=lfs -text
279
+ subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]din谩mica/01-Manejo[[:space:]]de[[:space:]]Memoria[[:space:]]y[[:space:]]Punteros[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
280
+ subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]din谩mica/01-slides-del-curso-de-poo-con-c_f444e705-c951-4d68-b9c0-907667481c77.pdf filter=lfs diff=lfs merge=lfs -text
281
+ subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]din谩mica/02-Punteros[[:space:]]en[[:space:]]C[[:space:]]Manejo[[:space:]]y[[:space:]]Uso[[:space:]]de[[:space:]]Memoria[[:space:]]Din谩mica.mp4 filter=lfs diff=lfs merge=lfs -text
282
+ subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/01-Memoria[[:space:]]din谩mica/03-Uso[[:space:]]de[[:space:]]Punteros[[:space:]]en[[:space:]]C[[:space:]]Variables[[:space:]]y[[:space:]]Memoria[[:space:]]Din谩mica.mp4 filter=lfs diff=lfs merge=lfs -text
283
+ subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/02-Estructuras[[:space:]]de[[:space:]]datos/01-Estructuras[[:space:]]de[[:space:]]Datos[[:space:]]Personalizadas[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
284
+ subir/Curso[[:space:]]de[[:space:]]Programaci贸n[[:space:]]Orientada[[:space:]]a[[:space:]]Objetos[[:space:]]con[[:space:]]C/02-Estructuras[[:space:]]de[[:space:]]datos/02-Creaci贸n[[:space:]]y[[:space:]]uso[[:space:]]de[[:space:]]estructuras[[:space:]]y[[:space:]]punteros[[:space:]]en[[:space:]]C.mp4 filter=lfs diff=lfs merge=lfs -text
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/04-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-Programaci贸n Orientada a Objetos en JavaScript Clases y Prototipos.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:97d963e7c3603c2d6fd760a050a4ff963f6f63b93aee69cca37abd81bd678067
3
+ size 36327283
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-Programaci贸n Orientada a Objetos en JavaScript Clases y Prototipos.vtt ADDED
@@ -0,0 +1,178 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:02.540
4
+ Vamos a hablar de un tema que es muy
5
+ importante.
6
+
7
+ 00:02.540 --> 00:05.260
8
+ Cuando estamos hablando de JavaScript y de
9
+ programaci贸n
10
+
11
+ 00:05.260 --> 00:08.740
12
+ orientada a objetos, hay dos temas que son
13
+ importantes entender.
14
+
15
+ 00:08.740 --> 00:12.800
16
+ En JavaScript, JavaScript funciona con
17
+ objetos y prototipos.
18
+
19
+ 00:12.800 --> 00:16.540
20
+ Y programaci贸n orientada a objetos
21
+ funciona con herencia.
22
+
23
+ 00:16.540 --> 00:19.440
24
+ Y debemos explicar qu茅 es
25
+ esto.
26
+
27
+ 00:19.440 --> 00:22.760
28
+ Vamos a suponer que vamos a armar una
29
+ clase constructora
30
+
31
+ 00:22.760 --> 00:25.660
32
+ o una funci贸n constructora de una persona.
33
+
34
+ 00:25.660 --> 00:28.060
35
+ Esta clase va a ser nuestro
36
+ molde.
37
+
38
+ 00:28.060 --> 00:31.860
39
+ En este molde, nosotros vamos a poner
40
+ ciertas propiedades y m茅todos
41
+
42
+ 00:31.860 --> 00:34.400
43
+ que despu茅s vamos a utilizar para rellenar
44
+ con informaci贸n
45
+
46
+ 00:34.400 --> 00:36.660
47
+ cuando creamos nuestra
48
+ instancia.
49
+
50
+ 00:36.660 --> 00:39.300
51
+ Siempre que estamos trabajando con
52
+ clases
53
+
54
+ 00:39.300 --> 00:41.460
55
+ o con funciones
56
+ constructoras,
57
+
58
+ 00:41.460 --> 00:44.500
59
+ este tipo de funciones de objetos
60
+ constructores
61
+
62
+ 00:44.500 --> 00:47.300
63
+ autom谩ticamente van a generar un prototipo.
64
+
65
+ 00:47.300 --> 00:48.500
66
+ All铆 se le
67
+ llama.
68
+
69
+ 00:48.500 --> 00:52.400
70
+ Este prototipo va a tener todas las
71
+ propiedades y los m茅todos
72
+
73
+ 00:52.400 --> 00:55.860
74
+ que se van a compartir despu茅s o que se
75
+ van a heredar
76
+
77
+ 00:55.860 --> 01:01.060
78
+ en las instancias que vamos a crear de
79
+ esta clase principal.
80
+
81
+ 01:01.060 --> 01:05.060
82
+ Entonces supongamos, tenemos nuestra clase
83
+ de una persona
84
+
85
+ 01:05.060 --> 01:08.060
86
+ que ahorita solo tiene ciertas propiedades
87
+ y m茅todos.
88
+
89
+ 01:08.060 --> 01:11.960
90
+ Ya que tengamos eso listo y creemos una
91
+ instancia,
92
+
93
+ 01:11.960 --> 01:15.860
94
+ vamos a crear una instancia de persona que
95
+ ahora se va a llamar, por ejemplo, Jos茅.
96
+
97
+ 01:15.860 --> 01:18.100
98
+ Tenemos a Jos茅, que tiene 30
99
+ a帽os,
100
+
101
+ 01:18.100 --> 01:22.360
102
+ que tiene una altura de 1,70 y que es
103
+ colombiano.
104
+
105
+ 01:22.360 --> 01:23.900
106
+ Ya que tenemos
107
+ esto,
108
+
109
+ 01:23.900 --> 01:27.060
110
+ en nuestra clase nosotros tambi茅n tenemos
111
+ m茅todos
112
+
113
+ 01:27.060 --> 01:30.100
114
+ que no tenemos que generar en la instancia
115
+ de Jos茅.
116
+
117
+ 01:30.100 --> 01:34.160
118
+ En nuestra clase principal tenemos un
119
+ m茅todo que se llama saludar.
120
+
121
+ 01:34.160 --> 01:36.760
122
+ Entonces vamos a hacer que Jos茅, con esta
123
+ informaci贸n,
124
+
125
+ 01:36.760 --> 01:41.400
126
+ pueda saludar con el m茅todo que est谩
127
+ heredando de la clase padre.
128
+
129
+ 01:41.400 --> 01:43.300
130
+ En este caso, lo que har铆amos
131
+ es,
132
+
133
+ 01:43.300 --> 01:45.860
134
+ ya que tenemos la informaci贸n de la
135
+ instancia de Jos茅,
136
+
137
+ 01:45.860 --> 01:49.620
138
+ podemos hacer que Jos茅 haga la acci贸n de
139
+ saludar
140
+
141
+ 01:49.620 --> 01:51.020
142
+ y que entonces el saludo
143
+ sea,
144
+
145
+ 01:51.020 --> 01:53.900
146
+ hola, mi nombre es Jos茅, 驴c贸mo te llamas
147
+ t煤?
148
+
149
+ 01:53.900 --> 01:56.460
150
+ Nosotros no tenemos que generar, como te
151
+ comento,
152
+
153
+ 01:56.460 --> 01:58.460
154
+ el m茅todo en la instancia de
155
+ Jos茅.
156
+
157
+ 01:58.460 --> 02:02.820
158
+ Si una vez que generamos el m茅todo que
159
+ extiende de la clase padre,
160
+
161
+ 02:02.820 --> 02:05.700
162
+ que es la clase principal que tenemos,
163
+ este molde,
164
+
165
+ 02:05.700 --> 02:08.220
166
+ en ese momento, gracias al
167
+ prototipo
168
+
169
+ 02:08.220 --> 02:10.660
170
+ que se gener贸 de esta clase constructora,
171
+
172
+ 02:10.660 --> 02:13.120
173
+ nosotros podemos heredar tambi茅n los
174
+ m茅todos
175
+
176
+ 02:13.120 --> 02:23.120
177
+ que fueron creados de esta clase padre.
178
+
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-index_23e34316-5be6-49e9-b2bf-a78e5c48b1f7.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class Animal {
2
+ constructor(nombre, tipo) {
3
+ this.nombre = nombre;
4
+ this.tipo = tipo;
5
+ }
6
+ emitirSonido() {
7
+ console.log("El animal emite un sonido");
8
+ }
9
+ }
10
+
11
+ class Perro extends Animal {
12
+ constructor(nombre, tipo, raza) {
13
+ super(nombre, tipo);
14
+ this.raza = raza;
15
+ }
16
+ emitirSonido() {
17
+ console.log("El perro ladra");
18
+ }
19
+ correr() {
20
+ console.log(`${this.nombre} corre alegremente`);
21
+ }
22
+ }
23
+
24
+ const perro1 = new Perro("Bobby", "Perro", "Pug");
25
+
26
+ console.log(perro1);
27
+ perro1.correr();
28
+ perro1.emitirSonido();
29
+
30
+ perro1.nuevoMetodo = function () {
31
+ console.log("Este es un metodo");
32
+ };
33
+
34
+ Perro.prototype.segundoMetodo = function () {
35
+ console.log("Es otro nuevo metodo");
36
+ };
37
+
38
+ Animal.prototype.tercerMetodo = function () {
39
+ console.log("Un metodo m谩s");
40
+ };
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-Prototipos y Herencia en JavaScript Construcci贸n y Uso Pr谩ctico.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2aaddf76e2938d2cfaf4a725d8846cda91fd4fd818e0ecf6083443e23a0cce04
3
+ size 103885593
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-Prototipos y Herencia en JavaScript Construcci贸n y Uso Pr谩ctico.vtt ADDED
@@ -0,0 +1,1256 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:05.000
4
+ Vamos a poner en pr谩ctica el concepto de
5
+ prototipos y herencia.
6
+
7
+ 00:05.000 --> 00:08.000
8
+ Cuando estamos hablando de prototipos y
9
+ herencia,
10
+
11
+ 00:08.000 --> 00:12.000
12
+ tenemos primero que identificar que en la
13
+ propiedad prototipo
14
+
15
+ 00:12.000 --> 00:15.000
16
+ solo existen funciones de
17
+ objetos.
18
+
19
+ 00:15.000 --> 00:18.000
20
+ Esto quiere decir que solo existe en clases,
21
+
22
+ 00:18.000 --> 00:21.000
23
+ clases de JavaScript que nosotros construimos,
24
+
25
+ 00:21.000 --> 00:25.000
26
+ o en lo que son funciones constructoras.
27
+
28
+ 00:25.000 --> 00:27.000
29
+ Las funciones constructoras que nosotros
30
+ hacemos
31
+
32
+ 00:27.000 --> 00:32.000
33
+ para utilizar como moldes para empezar a
34
+ construir ciertos objetos.
35
+
36
+ 00:32.000 --> 00:36.000
37
+ Solo estas dos van a generar algo que se
38
+ le llama la propiedad
39
+
40
+ 00:36.000 --> 00:38.000
41
+ que es un
42
+ prototipo.
43
+
44
+ 00:38.000 --> 00:40.000
45
+ Que pr谩cticamente el
46
+ prototipo,
47
+
48
+ 00:40.000 --> 00:43.000
49
+ nosotros cuando empezamos a generar aqu铆,
50
+
51
+ 00:43.000 --> 00:46.000
52
+ por ejemplo, los m茅todos de nuestras clases,
53
+
54
+ 00:46.000 --> 00:50.000
55
+ de nuestra funci贸n constructora, o las
56
+ propiedades,
57
+
58
+ 00:50.000 --> 00:54.000
59
+ el prototipo lo que va a
60
+ hacer
61
+
62
+ 00:54.000 --> 00:59.000
63
+ va a tener por dentro los mismos
64
+ m茅todos
65
+
66
+ 00:59.000 --> 01:03.000
67
+ y las mismas propiedades que nosotros
68
+ empecemos a construir
69
+
70
+ 01:03.000 --> 01:07.000
71
+ en lo que son las clases o las funciones
72
+ constructoras.
73
+
74
+ 01:07.000 --> 01:08.000
75
+ 驴Para
76
+ qu茅?
77
+
78
+ 01:08.000 --> 01:11.000
79
+ Para que esto, cuando nosotros tengamos,
80
+ por ejemplo,
81
+
82
+ 01:11.000 --> 01:14.000
83
+ alguna instancia o alguna otra
84
+ clase
85
+
86
+ 01:14.000 --> 01:17.000
87
+ que extienda de nuestra clase principal,
88
+
89
+ 01:17.000 --> 01:20.000
90
+ podamos asegurar de compartir los m茅todos
91
+ y propiedades.
92
+
93
+ 01:20.000 --> 01:22.000
94
+ Esto es importante que nosotros lo entendamos.
95
+
96
+ 01:22.000 --> 01:24.000
97
+ No es algo que
98
+ programamos,
99
+
100
+ 01:24.000 --> 01:26.000
101
+ es algo que pasa autom谩ticamente solo,
102
+
103
+ 01:26.000 --> 01:29.000
104
+ pero es importante que nosotros lo podamos
105
+ entender.
106
+
107
+ 01:29.000 --> 01:31.000
108
+ Y algo tambi茅n que es importante
109
+ explicar
110
+
111
+ 01:31.000 --> 01:33.000
112
+ es que, como te
113
+ dec铆a,
114
+
115
+ 01:33.000 --> 01:36.000
116
+ la propiedad de prototipo que se genera
117
+ sola
118
+
119
+ 01:36.000 --> 01:39.000
120
+ cuando nosotros construimos una clase
121
+ constructora
122
+
123
+ 01:39.000 --> 01:41.000
124
+ o una funci贸n
125
+ constructora,
126
+
127
+ 01:41.000 --> 01:45.000
128
+ solo funciona con funciones y clases.
129
+
130
+ 01:45.000 --> 01:50.000
131
+ Si construimos una
132
+ instancia,
133
+
134
+ 01:50.000 --> 01:54.000
135
+ las instancias no van a tener esta
136
+ propiedad de prototipo.
137
+
138
+ 01:54.000 --> 01:56.000
139
+ Entonces, ahora, para empezar a hablar de
140
+ un ejemplo real
141
+
142
+ 01:56.000 --> 01:58.000
143
+ que podamos ver en
144
+ pr谩ctica,
145
+
146
+ 01:58.000 --> 02:01.000
147
+ vamos a empezar a construir, por ejemplo,
148
+ ciertas clases
149
+
150
+ 02:01.000 --> 02:03.000
151
+ para ver c贸mo
152
+ funciona.
153
+
154
+ 02:03.000 --> 02:05.000
155
+ Entonces, empezamos con
156
+ class.
157
+
158
+ 02:05.000 --> 02:08.000
159
+ Vamos a construir una clase que se llama
160
+ Animal.
161
+
162
+ 02:08.000 --> 02:10.000
163
+ Abrimos los
164
+ brackets.
165
+
166
+ 02:10.000 --> 02:14.000
167
+ Y adentro de la clase Animal vamos a poner
168
+ el constructor
169
+
170
+ 02:14.000 --> 02:17.000
171
+ que vamos a utilizar para tener ciertas
172
+ propiedades.
173
+
174
+ 02:17.000 --> 02:22.000
175
+ En este caso va a ser algo b谩sico que es
176
+ el nombre y el tipo.
177
+
178
+ 02:22.000 --> 02:23.000
179
+ Como hablamos de
180
+ animal,
181
+
182
+ 02:23.000 --> 02:26.000
183
+ puede ser que estemos hablando de un perro,
184
+ un gato,
185
+
186
+ 02:26.000 --> 02:28.000
187
+ cualquier otro tipo de
188
+ animal.
189
+
190
+ 02:28.000 --> 02:30.000
191
+ Entonces, el tipo va a ser
192
+ importante
193
+
194
+ 02:30.000 --> 02:32.000
195
+ para poder
196
+ diferenciarlo.
197
+
198
+ 02:32.000 --> 02:37.000
199
+ Ya que tenemos aqu铆 como el nombre de las
200
+ propiedades b谩sicas,
201
+
202
+ 02:37.000 --> 02:42.000
203
+ comenzamos a ligar o terminar de generar
204
+ nuestro constructor.
205
+
206
+ 02:42.000 --> 02:47.000
207
+ dis.nombre es igual al nombre que nos van
208
+ a pasar
209
+
210
+ 02:47.000 --> 02:49.000
211
+ al momento de generar la
212
+ instancia.
213
+
214
+ 02:49.000 --> 02:55.000
215
+ dis.tipo va a ser igual al tipo que...
216
+
217
+ 02:55.000 --> 03:00.000
218
+ el tipo, ac谩, que est谩
219
+ aqu铆,
220
+
221
+ 03:00.000 --> 03:01.000
222
+ que es el tipo que nos van a
223
+ poner
224
+
225
+ 03:01.000 --> 03:03.000
226
+ al momento de que se genere la instancia.
227
+
228
+ 03:03.000 --> 03:06.000
229
+ Ya tenemos aqu铆 la estructura del constructor.
230
+
231
+ 03:06.000 --> 03:09.000
232
+ Ahora, vamos a crear un
233
+ m茅todo,
234
+
235
+ 03:09.000 --> 03:12.000
236
+ emitir
237
+ sonido.
238
+
239
+ 03:12.000 --> 03:14.000
240
+ Como es un
241
+ animal,
242
+
243
+ 03:14.000 --> 03:16.000
244
+ los animales tambi茅n tienen la
245
+ diferencia
246
+
247
+ 03:16.000 --> 03:18.000
248
+ de que uno de los sonidos son distintos.
249
+
250
+ 03:18.000 --> 03:20.000
251
+ Entonces, con emitir
252
+ sonido,
253
+
254
+ 03:20.000 --> 03:22.000
255
+ lo que queremos es tambi茅n algo b谩sico,
256
+
257
+ 03:22.000 --> 03:26.000
258
+ console.log, que pr谩cticamente, de forma
259
+ muy r谩pida,
260
+
261
+ 03:26.000 --> 03:33.000
262
+ simplemente nos diga el animal emite un
263
+ sonido.
264
+
265
+ 03:33.000 --> 03:35.000
266
+ Perfecto con
267
+ eso.
268
+
269
+ 03:35.000 --> 03:36.000
270
+ Ya tenemos nuestra primer
271
+ clase.
272
+
273
+ 03:36.000 --> 03:39.000
274
+ Esta es una clase que es un
275
+ molde
276
+
277
+ 03:39.000 --> 03:42.000
278
+ para poder empezar a construir animales.
279
+
280
+ 03:42.000 --> 03:44.000
281
+ Antes de esto, por
282
+ ejemplo,
283
+
284
+ 03:44.000 --> 03:46.000
285
+ si yo quiero
286
+ construir,
287
+
288
+ 03:46.000 --> 03:49.000
289
+ digamos, quiero generar
290
+ perros,
291
+
292
+ 03:49.000 --> 03:52.000
293
+ pues perros tambi茅n tiene una subcategor铆a.
294
+
295
+ 03:52.000 --> 03:54.000
296
+ Viene el tipo de raza de
297
+ perro,
298
+
299
+ 03:54.000 --> 03:57.000
300
+ entonces, si empiezo a generar instancias
301
+ de animal
302
+
303
+ 03:57.000 --> 03:59.000
304
+ que sean
305
+ perro,
306
+
307
+ 03:59.000 --> 04:01.000
308
+ creo que me queda un poco
309
+ corto,
310
+
311
+ 04:01.000 --> 04:03.000
312
+ tengo que generar otra
313
+ clase,
314
+
315
+ 04:03.000 --> 04:06.000
316
+ que en este caso va a ser otra clase
317
+ constructora,
318
+
319
+ 04:06.000 --> 04:09.000
320
+ que va a ser perro, por
321
+ ejemplo.
322
+
323
+ 04:09.000 --> 04:12.000
324
+ Entonces vamos a generar
325
+ class,
326
+
327
+ 04:12.000 --> 04:15.000
328
+ que sea perro,
329
+ exacto,
330
+
331
+ 04:15.000 --> 04:19.000
332
+ y empezamos con su
333
+ constructor.
334
+
335
+ 04:19.000 --> 04:20.000
336
+ Tenemos el
337
+ constructor,
338
+
339
+ 04:20.000 --> 04:21.000
340
+ y en perro, 驴qu茅 me
341
+ interesa?
342
+
343
+ 04:21.000 --> 04:24.000
344
+ A ver, va a ser el nombre del perro,
345
+
346
+ 04:24.000 --> 04:27.000
347
+ va a ser el tipo de
348
+ perro,
349
+
350
+ 04:27.000 --> 04:29.000
351
+ y va a ser, por ejemplo, la
352
+ raza,
353
+
354
+ 04:29.000 --> 04:32.000
355
+ que esto tambi茅n es
356
+ importante.
357
+
358
+ 04:32.000 --> 04:35.000
359
+ Ahora, aqu铆, 驴por qu茅
360
+ estamos?
361
+
362
+ 04:35.000 --> 04:39.000
363
+ Una vez que nosotros tenemos una clase,
364
+
365
+ 04:39.000 --> 04:41.000
366
+ que esta es una clase
367
+ constructora,
368
+
369
+ 04:41.000 --> 04:43.000
370
+ esta es una clase
371
+ constructora,
372
+
373
+ 04:43.000 --> 04:45.000
374
+ estas todav铆a no son
375
+ instancias,
376
+
377
+ 04:45.000 --> 04:46.000
378
+ en este
379
+ momento,
380
+
381
+ 04:46.000 --> 04:48.000
382
+ la clase constructora de
383
+ perro,
384
+
385
+ 04:48.000 --> 04:50.000
386
+ lo que a m铆 me interesa es que pueda
387
+ extender
388
+
389
+ 04:50.000 --> 04:54.000
390
+ ciertas cosas que tiene esta otra clase
391
+ constructora.
392
+
393
+ 04:54.000 --> 04:55.000
394
+ Entonces, con
395
+ esto,
396
+
397
+ 04:55.000 --> 04:57.000
398
+ nuestra clase todav铆a no est谩 lista.
399
+
400
+ 04:57.000 --> 04:59.000
401
+ Si vamos a utilizar ciertas
402
+ cosas
403
+
404
+ 04:59.000 --> 05:01.000
405
+ que tiene la clase
406
+ constructora,
407
+
408
+ 05:01.000 --> 05:04.000
409
+ aqu铆 tenemos que empezar con extend,
410
+
411
+ 05:04.000 --> 05:09.000
412
+ que
413
+ extends.
414
+
415
+ 05:09.000 --> 05:11.000
416
+ Lo que le estamos diciendo
417
+ es,
418
+
419
+ 05:11.000 --> 05:15.000
420
+ la clase de perro va a extender de la
421
+ clase animal.
422
+
423
+ 05:15.000 --> 05:18.000
424
+ Una vez que extiende de la clase animal,
425
+
426
+ 05:18.000 --> 05:20.000
427
+ ya podemos utilizar ciertas
428
+ cosas
429
+
430
+ 05:20.000 --> 05:22.000
431
+ que vienen en esta
432
+ clase,
433
+
434
+ 05:22.000 --> 05:23.000
435
+ que es la clase
436
+ padre.
437
+
438
+ 05:23.000 --> 05:25.000
439
+ En este momento, yo estoy
440
+ diciendo,
441
+
442
+ 05:25.000 --> 05:27.000
443
+ perro, necesito que traiga el nombre,
444
+
445
+ 05:27.000 --> 05:29.000
446
+ tambi茅n necesito que traiga la raza,
447
+
448
+ 05:29.000 --> 05:31.000
449
+ y el tipo, el tipo, pues
450
+ bueno,
451
+
452
+ 05:31.000 --> 05:33.000
453
+ el tipo y raza es lo mismo en perro,
454
+
455
+ 05:33.000 --> 05:35.000
456
+ pero el tipo, por
457
+ ejemplo,
458
+
459
+ 05:35.000 --> 05:37.000
460
+ es algo que yo puedo utilizar
461
+ pr谩cticamente
462
+
463
+ 05:37.000 --> 05:38.000
464
+ de la clase de
465
+ animal.
466
+
467
+ 05:38.000 --> 05:40.000
468
+ Entonces, si yo lo voy a
469
+ utilizar,
470
+
471
+ 05:40.000 --> 05:43.000
472
+ necesito que aqu铆 venga el tipo en nuestro
473
+ constructor,
474
+
475
+ 05:43.000 --> 05:45.000
476
+ porque ya con
477
+ esto,
478
+
479
+ 05:45.000 --> 05:47.000
480
+ yo puedo empezar a utilizar el this.
481
+
482
+ 05:47.000 --> 05:49.000
483
+ Pero para que yo pueda utilizar el
484
+ this
485
+
486
+ 05:49.000 --> 05:53.000
487
+ en ciertas propiedades que vienen de otra
488
+ clase,
489
+
490
+ 05:53.000 --> 05:56.000
491
+ necesito utilizar una palabra
492
+ reservada
493
+
494
+ 05:56.000 --> 05:58.000
495
+ que se llama
496
+ sub.
497
+
498
+ 05:58.000 --> 06:00.000
499
+ Y entonces en
500
+ super,
501
+
502
+ 06:00.000 --> 06:03.000
503
+ para que yo pueda utilizar el
504
+ this
505
+
506
+ 06:03.000 --> 06:05.000
507
+ de mi
508
+ clase,
509
+
510
+ 06:05.000 --> 06:08.000
511
+ que pueda extender de una clase constructora,
512
+
513
+ 06:08.000 --> 06:10.000
514
+ necesito poner, por
515
+ ejemplo,
516
+
517
+ 06:10.000 --> 06:12.000
518
+ cu谩les son ese tipo de
519
+ propiedades,
520
+
521
+ 06:12.000 --> 06:14.000
522
+ que en este caso ser谩 el
523
+ nombre
524
+
525
+ 06:14.000 --> 06:16.000
526
+ y el
527
+ tipo.
528
+
529
+ 06:16.000 --> 06:20.000
530
+ Entonces con esto, ya
531
+ puedo,
532
+
533
+ 06:20.000 --> 06:24.000
534
+ aqu铆 yo utilizar el
535
+ this.raza,
536
+
537
+ 06:24.000 --> 06:27.000
538
+ que es lo 煤nico
539
+ nuevo
540
+
541
+ 06:27.000 --> 06:31.000
542
+ que trae mi clase constructora de perro,
543
+
544
+ 06:31.000 --> 06:33.000
545
+ que va a ser igual a
546
+ raza.
547
+
548
+ 06:33.000 --> 06:37.000
549
+ Entonces aqu铆 es importante comentar
550
+ ciertas cosas
551
+
552
+ 06:37.000 --> 06:39.000
553
+ con relaci贸n al
554
+ this.
555
+
556
+ 06:39.000 --> 06:40.000
557
+ Por
558
+ ejemplo,
559
+
560
+ 06:40.000 --> 06:42.000
561
+ el
562
+ this,
563
+
564
+ 06:42.000 --> 06:44.000
565
+ al momento de que nosotros utilizamos el this,
566
+
567
+ 06:44.000 --> 06:47.000
568
+ llama al constructor de la
569
+ base,
570
+
571
+ 06:47.000 --> 06:48.000
572
+ de la clase
573
+ base.
574
+
575
+ 06:48.000 --> 06:49.000
576
+ 驴Qu茅 quiere decir
577
+ entonces?
578
+
579
+ 06:49.000 --> 06:52.000
580
+ Cuando entramos nosotros a la clase de perro,
581
+
582
+ 06:52.000 --> 06:55.000
583
+ que extiende de
584
+ animal,
585
+
586
+ 06:55.000 --> 06:57.000
587
+ lo que va a hacer el
588
+ super
589
+
590
+ 06:57.000 --> 06:59.000
591
+ es que va a llamar al
592
+ constructor
593
+
594
+ 06:59.000 --> 07:01.000
595
+ de la clase
596
+ animal
597
+
598
+ 07:01.000 --> 07:02.000
599
+ y le va a
600
+ decir,
601
+
602
+ 07:02.000 --> 07:04.000
603
+ oye, voy a utilizar el nombre y el
604
+ tipo
605
+
606
+ 07:04.000 --> 07:07.000
607
+ en la clase que se est谩 extendiendo que es
608
+ perro.
609
+
610
+ 07:07.000 --> 07:09.000
611
+ Si nosotros no ponemos el
612
+ super,
613
+
614
+ 07:09.000 --> 07:12.000
615
+ no podr铆amos hacer uso del nombre y el
616
+ tipo
617
+
618
+ 07:12.000 --> 07:14.000
619
+ en nuestra clase de
620
+ perro,
621
+
622
+ 07:14.000 --> 07:18.000
623
+ porque entonces tendr铆amos que quitar el
624
+ extend animal
625
+
626
+ 07:18.000 --> 07:20.000
627
+ y empezar a replicar el
628
+ c贸digo.
629
+
630
+ 07:20.000 --> 07:23.000
631
+ De aqu铆 no estar铆amos utilizando la herencia,
632
+
633
+ 07:23.000 --> 07:26.000
634
+ que es importante en programaci贸n
635
+ orientada a objetos.
636
+
637
+ 07:26.000 --> 07:29.000
638
+ Aqu铆 estar铆amos simplemente haciendo una
639
+ clase nueva
640
+
641
+ 07:29.000 --> 07:31.000
642
+ y estar铆amos replicando nombre y
643
+ tipo
644
+
645
+ 07:31.000 --> 07:34.000
646
+ que ya est谩bamos utilizando en otra clase
647
+ m谩s grande
648
+
649
+ 07:34.000 --> 07:36.000
650
+ o en otra clase
651
+ padre,
652
+
653
+ 07:36.000 --> 07:38.000
654
+ que lo que puede hacer como
655
+ beneficio
656
+
657
+ 07:38.000 --> 07:40.000
658
+ es extendemos de lo que ya
659
+ tenemos.
660
+
661
+ 07:40.000 --> 07:41.000
662
+ Suena un poco
663
+ complejo,
664
+
665
+ 07:41.000 --> 07:43.000
666
+ pero ahorita en el ejemplo lo vas a
667
+ entender bastante bien
668
+
669
+ 07:43.000 --> 07:46.000
670
+ ya que empecemos a imprimir a qu茅 me
671
+ refiero con esto.
672
+
673
+ 07:46.000 --> 07:49.000
674
+ Pues siempre que t煤 extiendas de una clase,
675
+
676
+ 07:49.000 --> 07:51.000
677
+ quiere decir que vas a
678
+ empezar
679
+
680
+ 07:51.000 --> 07:54.000
681
+ o tienes el superpoder de
682
+ utilizar
683
+
684
+ 07:54.000 --> 07:59.000
685
+ los m茅todos y las propiedades de una clase
686
+ que ya existe
687
+
688
+ 07:59.000 --> 08:01.000
689
+ para que t煤 no tengas que replicarlo.
690
+
691
+ 08:01.000 --> 08:04.000
692
+ Y para poder hacerlo, utilizas el extend
693
+ animal,
694
+
695
+ 08:04.000 --> 08:06.000
696
+ que es el extend de una clase
697
+ m谩s,
698
+
699
+ 08:06.000 --> 08:10.000
700
+ y el super para poder entrar a lo que son
701
+ las propiedades,
702
+
703
+ 08:10.000 --> 08:13.000
704
+ en este caso, que tiene la otra clase.
705
+
706
+ 08:13.000 --> 08:14.000
707
+ Perfecto.
708
+
709
+ 08:14.000 --> 08:17.000
710
+ Aqu铆 lo que quiero es para que puedas
711
+ entender,
712
+
713
+ 08:17.000 --> 08:21.000
714
+ this sigue siendo la clase
715
+ misma.
716
+
717
+ 08:21.000 --> 08:24.000
718
+ Entonces aqu铆 estamos teniendo el this.
719
+ raza,
720
+
721
+ 08:24.000 --> 08:27.000
722
+ este this hace referencia a la clase de perro.
723
+
724
+ 08:27.000 --> 08:31.000
725
+ Y si nosotros queremos hacer el uso de,
726
+ por ejemplo,
727
+
728
+ 08:31.000 --> 08:32.000
729
+ nombre, tipo o
730
+ raza,
731
+
732
+ 08:32.000 --> 08:34.000
733
+ el this es lo que nos va a
734
+ ayudar,
735
+
736
+ 08:34.000 --> 08:36.000
737
+ pero en este caso nombre y
738
+ tipo
739
+
740
+ 08:36.000 --> 08:38.000
741
+ no pertenecen a la clase de
742
+ perro,
743
+
744
+ 08:38.000 --> 08:40.000
745
+ pertenecen a una clase
746
+ adicional.
747
+
748
+ 08:40.000 --> 08:43.000
749
+ Con el super yo puedo utilizar
750
+ this
751
+
752
+ 08:43.000 --> 08:45.000
753
+ para poder utilizar nombre y
754
+ tipo.
755
+
756
+ 08:45.000 --> 08:49.000
757
+ Vamos a un ejemplo un poco m谩s
758
+ visual
759
+
760
+ 08:49.000 --> 08:51.000
761
+ para que puedas
762
+ entenderme.
763
+
764
+ 08:51.000 --> 08:53.000
765
+ Ya que estamos aqu铆 en la de
766
+ perro,
767
+
768
+ 08:53.000 --> 08:55.000
769
+ vamos a generar un
770
+ m茅todo
771
+
772
+ 08:55.000 --> 08:58.000
773
+ que se va a llamar emitir
774
+ sonido.
775
+
776
+ 08:58.000 --> 08:59.000
777
+ Y t煤 puedes
778
+ decir,
779
+
780
+ 08:59.000 --> 09:02.000
781
+ como Diego, ya generamos ese m茅todo en
782
+ otra clase,
783
+
784
+ 09:02.000 --> 09:05.000
785
+ tienes el super poder de
786
+ reescribir
787
+
788
+ 09:05.000 --> 09:09.000
789
+ lo que el m茅todo va a, en este caso, imprimir.
790
+
791
+ 09:09.000 --> 09:13.000
792
+ Lo que quiero es que cuando yo utilice el
793
+ m茅todo,
794
+
795
+ 09:13.000 --> 09:15.000
796
+ este m茅todo en
797
+ perro,
798
+
799
+ 09:15.000 --> 09:18.000
800
+ quiero que me saque un texto completamente
801
+ distinto.
802
+
803
+ 09:18.000 --> 09:21.000
804
+ Entonces ac谩,
805
+ console.log,
806
+
807
+ 09:22.000 --> 09:27.000
808
+ lo que quiero que haga es que sea el perro
809
+ ladra.
810
+
811
+ 09:27.000 --> 09:30.000
812
+ En vez de que me diga el animal emite un
813
+ sonido,
814
+
815
+ 09:30.000 --> 09:31.000
816
+ que esto es muy
817
+ gen茅rico,
818
+
819
+ 09:31.000 --> 09:34.000
820
+ porque hablamos nada m谩s de una clase de
821
+ animal,
822
+
823
+ 09:34.000 --> 09:37.000
824
+ quiero que cuando utilice alguna instancia
825
+ de perro,
826
+
827
+ 09:37.000 --> 09:40.000
828
+ lo que me imprima al sacar el emitir el
829
+ sonido
830
+
831
+ 09:40.000 --> 09:43.000
832
+ sea el perro, sea muy
833
+ expl铆cito
834
+
835
+ 09:43.000 --> 09:45.000
836
+ que estamos hablando de un perro, ladra.
837
+
838
+ 09:45.000 --> 09:49.000
839
+ Perfecto, y ahora vamos a generar otro
840
+ m茅todo
841
+
842
+ 09:49.000 --> 09:51.000
843
+ que se llama
844
+ correr.
845
+
846
+ 09:53.000 --> 09:56.000
847
+ Y aqu铆 lo que quiero es que se imprima,
848
+
849
+ 09:56.000 --> 09:59.000
850
+ console.log, vamos a utilizar el nombre,
851
+
852
+ 09:59.000 --> 10:02.000
853
+ que el nombre estamos extendiendo del
854
+ animal
855
+
856
+ 10:02.000 --> 10:06.000
857
+ y que es donde super nos va a permitir
858
+ utilizar el this
859
+
860
+ 10:06.000 --> 10:09.000
861
+ para poder extender de esa propiedad.
862
+
863
+ 10:09.000 --> 10:13.000
864
+ Quiero que aqu铆 en el nombre lo que me
865
+ traiga es un,
866
+
867
+ 10:13.000 --> 10:16.000
868
+ de hecho como he utilizado una variable,
869
+
870
+ 10:16.000 --> 10:18.000
871
+ vamos a hacerlo as铆, y
872
+ es
873
+
874
+ 10:21.000 --> 10:25.000
875
+ this.nombre, el nombre del
876
+ perro,
877
+
878
+ 10:26.000 --> 10:31.000
879
+ corre
880
+ alegremente.
881
+
882
+ 10:33.000 --> 10:34.000
883
+ Perfecto.
884
+
885
+ 10:34.000 --> 10:36.000
886
+ Entonces aqu铆 vamos a
887
+ guardar,
888
+
889
+ 10:36.000 --> 10:38.000
890
+ no nos va a imprimir absolutamente
891
+ nada
892
+
893
+ 10:38.000 --> 10:40.000
894
+ porque todav铆a no estamos generando
895
+ instancias.
896
+
897
+ 10:40.000 --> 10:43.000
898
+ Recordemos que estas apenas son moldes,
899
+
900
+ 10:43.000 --> 10:45.000
901
+ que todav铆a no tienen
902
+ informaci贸n,
903
+
904
+ 10:45.000 --> 10:47.000
905
+ son simplemente nuestras clases constructoras.
906
+
907
+ 10:47.000 --> 10:51.000
908
+ Entonces empezamos aqu铆 a generar una
909
+ primera instancia,
910
+
911
+ 10:51.000 --> 10:55.000
912
+ vamos como const que sea
913
+ perro1,
914
+
915
+ 10:55.000 --> 10:57.000
916
+ cuando est茅s trabajando en
917
+ programaci贸n
918
+
919
+ 10:57.000 --> 10:59.000
920
+ tienes que ser mucho m谩s expl铆citos,
921
+
922
+ 10:59.000 --> 11:02.000
923
+ por ejemplo, en el nombre de tus variables,
924
+
925
+ 11:02.000 --> 11:04.000
926
+ pero esto como ejemplo
927
+ funciona
928
+
929
+ 11:04.000 --> 11:06.000
930
+ para el uso pr谩ctico de esta
931
+ clase.
932
+
933
+ 11:06.000 --> 11:09.000
934
+ Pues ser谩 perro1, va a ser igual a new,
935
+
936
+ 11:09.000 --> 11:12.000
937
+ para crear una nueva instancia, de perro.
938
+
939
+ 11:12.000 --> 11:14.000
940
+ Quiero generar una instancia de perro.
941
+
942
+ 11:14.000 --> 11:18.000
943
+ Y esta instancia va a
944
+ tener,
945
+
946
+ 11:18.000 --> 11:21.000
947
+ este perro se va a llamar, por ejemplo,
948
+
949
+ 11:22.000 --> 11:25.000
950
+ yo creo que va a ser, s铆,
951
+ Bobby.
952
+
953
+ 11:27.000 --> 11:31.000
954
+ Bobby es un perro, es el
955
+ tipo,
956
+
957
+ 11:31.000 --> 11:34.000
958
+ y
959
+ aqu铆,
960
+
961
+ 11:34.000 --> 11:38.000
962
+ y la raza de Bobby es un
963
+ Pug.
964
+
965
+ 11:41.000 --> 11:43.000
966
+ Tenemos, si
967
+ guardamos,
968
+
969
+ 11:43.000 --> 11:46.000
970
+ ahora me interesa
971
+ console.log,
972
+
973
+ 11:46.000 --> 11:50.000
974
+ vamos a imprimir
975
+ perro1.
976
+
977
+ 11:51.000 --> 11:53.000
978
+ Entonces aqu铆 ya nos
979
+ regresa,
980
+
981
+ 11:53.000 --> 11:55.000
982
+ al momento de que
983
+ guardemos,
984
+
985
+ 11:55.000 --> 11:57.000
986
+ ya tenemos aqu铆
987
+ impreso
988
+
989
+ 11:57.000 --> 12:01.000
990
+ lo que ser铆a nuestro primer objeto de la
991
+ instancia perro,
992
+
993
+ 12:01.000 --> 12:03.000
994
+ y podemos ver que es un tipo
995
+ perro,
996
+
997
+ 12:03.000 --> 12:06.000
998
+ es una raza Pug y es un nombre Bobby.
999
+
1000
+ 12:06.000 --> 12:11.000
1001
+ Y esto est谩 ligado directamente a la
1002
+ constructora perro,
1003
+
1004
+ 12:11.000 --> 12:15.000
1005
+ que a su igual forma est谩 extendiendo
1006
+ cosas de animal.
1007
+
1008
+ 12:15.000 --> 12:17.000
1009
+ Pero bueno, es lo que me
1010
+ interesa.
1011
+
1012
+ 12:17.000 --> 12:20.000
1013
+ Aqu铆 tenemos ya pr谩cticamente nuestro
1014
+ primer perro
1015
+
1016
+ 12:20.000 --> 12:23.000
1017
+ que extiende de nuestra clase perro,
1018
+
1019
+ 12:23.000 --> 12:24.000
1020
+ que se llama
1021
+ Bobby.
1022
+
1023
+ 12:24.000 --> 12:26.000
1024
+ Ahora, vamos a ver lo que te
1025
+ dec铆a.
1026
+
1027
+ 12:26.000 --> 12:29.000
1028
+ Si yo lo que quiero es, por ejemplo,
1029
+
1030
+ 12:29.000 --> 12:33.000
1031
+ emitir el m茅todo de
1032
+ correz,
1033
+
1034
+ 12:34.000 --> 12:39.000
1035
+ ser铆a m谩s bien un
1036
+ perro1.correz,
1037
+
1038
+ 12:40.000 --> 12:42.000
1039
+ para ver qu茅 es lo que me
1040
+ regresa.
1041
+
1042
+ 12:46.000 --> 12:48.000
1043
+ Aqu铆 viene Bobby, corre alegremente,
1044
+
1045
+ 12:48.000 --> 12:50.000
1046
+ y es lo que te
1047
+ comentaba.
1048
+
1049
+ 12:50.000 --> 12:52.000
1050
+ Otros estamos imprimiendo el nombre,
1051
+
1052
+ 12:52.000 --> 12:56.000
1053
+ pero nuestra clase de perro, per se,
1054
+
1055
+ 12:56.000 --> 12:59.000
1056
+ el nombre no le pertenece a la clase de perro,
1057
+
1058
+ 12:59.000 --> 13:03.000
1059
+ sino est谩 heredando esa propiedad de la
1060
+ clase de animal.
1061
+
1062
+ 13:03.000 --> 13:06.000
1063
+ Y nosotros podemos hacer uso de propiedades,
1064
+
1065
+ 13:06.000 --> 13:07.000
1066
+ incluso
1067
+ m茅todos.
1068
+
1069
+ 13:07.000 --> 13:10.000
1070
+ Si nosotros mandamos llamar el m茅todo de
1071
+ emitir sonido,
1072
+
1073
+ 13:12.000 --> 13:15.000
1074
+ console.low, porque es
1075
+ una,
1076
+
1077
+ 13:15.000 --> 13:18.000
1078
+ bueno, de hecho, como es una propiedad,
1079
+
1080
+ 13:18.000 --> 13:26.000
1081
+ ser铆a
1082
+ perro1.emitirsonido,
1083
+
1084
+ 13:26.000 --> 13:28.000
1085
+ tendr铆a que regresar el perro ladra.
1086
+
1087
+ 13:28.000 --> 13:31.000
1088
+ Aqu铆 nos est谩 regresando pr谩cticamente el
1089
+ m茅todo
1090
+
1091
+ 13:31.000 --> 13:33.000
1092
+ que est谩 dentro de nuestra clase perro,
1093
+
1094
+ 13:33.000 --> 13:36.000
1095
+ no el m茅todo que est谩 dentro de nuestra
1096
+ clase animal.
1097
+
1098
+ 13:36.000 --> 13:37.000
1099
+ 驴Por
1100
+ qu茅?
1101
+
1102
+ 13:37.000 --> 13:40.000
1103
+ Porque estamos reescribiendo el m茅todo,
1104
+
1105
+ 13:40.000 --> 13:43.000
1106
+ porque estamos generando una instancia
1107
+ correcta
1108
+
1109
+ 13:43.000 --> 13:45.000
1110
+ de perro, no de
1111
+ animal.
1112
+
1113
+ 13:45.000 --> 13:47.000
1114
+ Si generamos una instancia de
1115
+ animal
1116
+
1117
+ 13:47.000 --> 13:51.000
1118
+ y mandamos llamar emitirsonido de la
1119
+ instancia de animal,
1120
+
1121
+ 13:51.000 --> 13:53.000
1122
+ nos regresar铆a este
1123
+ mensaje.
1124
+
1125
+ 13:53.000 --> 13:56.000
1126
+ Para nosotros, como estamos haciendo una
1127
+ instancia de perro,
1128
+
1129
+ 13:56.000 --> 13:58.000
1130
+ simplemente estamos reescribiendo el
1131
+ texto
1132
+
1133
+ 13:58.000 --> 14:00.000
1134
+ y nos regresa este
1135
+ mensaje.
1136
+
1137
+ 14:00.000 --> 14:03.000
1138
+ Ahora, si yo quisiera empezar con esta
1139
+ clase
1140
+
1141
+ 14:03.000 --> 14:05.000
1142
+ que yo ya tengo, por
1143
+ ejemplo,
1144
+
1145
+ 14:05.000 --> 14:09.000
1146
+ a crear nuevas propiedades o nuevos m茅todos,
1147
+
1148
+ 14:09.000 --> 14:12.000
1149
+ ah铆 es donde vamos a empezar a modificar
1150
+ el prototipo,
1151
+
1152
+ 14:12.000 --> 14:14.000
1153
+ que es lo que yo te
1154
+ dec铆a.
1155
+
1156
+ 14:14.000 --> 14:17.000
1157
+ Tenemos una clase constructora de
1158
+ animal
1159
+
1160
+ 14:17.000 --> 14:19.000
1161
+ y una clase constructora de
1162
+ perro.
1163
+
1164
+ 14:19.000 --> 14:22.000
1165
+ Autom谩ticamente estas dos
1166
+ clases
1167
+
1168
+ 14:22.000 --> 14:25.000
1169
+ generan algo que se le llama un
1170
+ prototipo
1171
+
1172
+ 14:25.000 --> 14:28.000
1173
+ que guarda los m茅todos y las
1174
+ propiedades
1175
+
1176
+ 14:28.000 --> 14:30.000
1177
+ de cada una de las
1178
+ clases.
1179
+
1180
+ 14:30.000 --> 14:32.000
1181
+ 驴A qu茅 me refiero con
1182
+ eso?
1183
+
1184
+ 14:32.000 --> 14:37.000
1185
+ Si ponemos animal.prototype e imprimimos,
1186
+
1187
+ 14:37.000 --> 14:41.000
1188
+ me regresa este peque帽o
1189
+ objeto.
1190
+
1191
+ 14:41.000 --> 14:44.000
1192
+ Cuando yo lo abro, este peque帽o objeto me
1193
+ dice
1194
+
1195
+ 14:44.000 --> 14:46.000
1196
+ perfecto, es el constructor
1197
+ animal.
1198
+
1199
+ 14:46.000 --> 14:51.000
1200
+ Al abrir animal, puedo tener
1201
+ informaci贸n
1202
+
1203
+ 14:51.000 --> 14:54.000
1204
+ de lo que viene de la clase constructora
1205
+ animal,
1206
+
1207
+ 14:54.000 --> 14:56.000
1208
+ pero me regresa que tengo un m茅todo,
1209
+
1210
+ 14:56.000 --> 14:58.000
1211
+ que es emitir
1212
+ sonido,
1213
+
1214
+ 14:58.000 --> 15:01.000
1215
+ que ese es el m茅todo que se est谩
1216
+ compartiendo pr谩cticamente,
1217
+
1218
+ 15:01.000 --> 15:04.000
1219
+ que yo puedo utilizar en otras instancias.
1220
+
1221
+ 15:04.000 --> 15:08.000
1222
+ Si hago lo mismo, por ejemplo, con perro.
1223
+
1224
+ 15:08.000 --> 15:12.000
1225
+ perro.prototype
1226
+
1227
+ 15:15.000 --> 15:19.000
1228
+ Aqu铆 con perro, me regresa que tiene dos
1229
+ instancias,
1230
+
1231
+ 15:19.000 --> 15:22.000
1232
+ que es emitir sonido y tiene el de correr.
1233
+
1234
+ 15:22.000 --> 15:25.000
1235
+ Si abro el tema de perro, me regresa que
1236
+ tiene tambi茅n
1237
+
1238
+ 15:25.000 --> 15:29.000
1239
+ cierta informaci贸n como el nombre de la
1240
+ clase constructora
1241
+
1242
+ 15:29.000 --> 15:32.000
1243
+ y que tiene un prototipo que est谩
1244
+ heredando
1245
+
1246
+ 15:32.000 --> 15:34.000
1247
+ ciertas cosas de
1248
+ animal.
1249
+
1250
+ 15:34.000 --> 15:36.000
1251
+ Podemos ver ac谩, y cuando entro a animal,
1252
+
1253
+ 15:36.000 --> 15:38.000
1254
+ me da la
1255
+ informaci贸n.
1256
+
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-index_384b7837-2cc2-4536-ac3b-b67f93155a03.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class Animal {
2
+ constructor(nombre, tipo) {
3
+ this.nombre = nombre;
4
+ this.tipo = tipo;
5
+ }
6
+ emitirSonido() {
7
+ console.log("El animal emite un sonido");
8
+ }
9
+ }
10
+
11
+ class Perro extends Animal {
12
+ constructor(nombre, tipo, raza) {
13
+ super(nombre, tipo);
14
+ this.raza = raza;
15
+ }
16
+ emitirSonido() {
17
+ console.log("El perro ladra");
18
+ }
19
+ correr() {
20
+ console.log(`${this.nombre} corre alegremente`);
21
+ }
22
+ }
23
+
24
+ const perro1 = new Perro("Bobby", "Perro", "Pug");
25
+
26
+ console.log(perro1);
27
+ perro1.correr();
28
+ perro1.emitirSonido();
29
+
30
+ perro1.nuevoMetodo = function () {
31
+ console.log("Este es un metodo");
32
+ };
33
+
34
+ Perro.prototype.segundoMetodo = function () {
35
+ console.log("Es otro nuevo metodo");
36
+ };
37
+
38
+ Animal.prototype.tercerMetodo = function () {
39
+ console.log("Un metodo m谩s");
40
+ };
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-index_6a991b46-e782-4d78-a468-526db36453e2.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class Animal {
2
+ constructor(nombre, tipo) {
3
+ this.nombre = nombre;
4
+ this.tipo = tipo;
5
+ }
6
+ emitirSonido() {
7
+ console.log("El animal emite un sonido");
8
+ }
9
+ }
10
+
11
+ class Perro extends Animal {
12
+ constructor(nombre, tipo, raza) {
13
+ super(nombre, tipo);
14
+ this.raza = raza;
15
+ }
16
+ emitirSonido() {
17
+ console.log("El perro ladra");
18
+ }
19
+ correr() {
20
+ console.log(`${this.nombre} corre alegremente`);
21
+ }
22
+ }
23
+
24
+ const perro1 = new Perro("Bobby", "Perro", "Pug");
25
+
26
+ console.log(perro1);
27
+ perro1.correr();
28
+ perro1.emitirSonido();
29
+
30
+ perro1.nuevoMetodo = function () {
31
+ console.log("Este es un metodo");
32
+ };
33
+
34
+ Perro.prototype.segundoMetodo = function () {
35
+ console.log("Es otro nuevo metodo");
36
+ };
37
+
38
+ Animal.prototype.tercerMetodo = function () {
39
+ console.log("Un metodo m谩s");
40
+ };
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-M茅todos y herencia protot铆pica en JavaScript.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:380bf3c9ad65be3f2898c8479385f4d1293c932d91647aa5db1eb60502e254c3
3
+ size 91902801
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-M茅todos y herencia protot铆pica en JavaScript.vtt ADDED
@@ -0,0 +1,655 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:05.200
4
+ 驴Qu茅 pasa si yo ahorita quisiera generar,
5
+ por ejemplo, de mi instancia de perro1 un nuevo m茅todo?
6
+
7
+ 00:05.200 --> 00:08.400
8
+ Porque me doy cuenta que al estar
9
+ trabajando ya con la instancia,
10
+
11
+ 00:08.400 --> 00:14.400
12
+ hay ciertas cosas que necesito particulares,
13
+ ya con las instancias que no vienen en mi clase constructora.
14
+
15
+ 00:14.400 --> 00:20.600
16
+ Pues lo que voy a hacer es, hay ciertas
17
+ formas, pero lo primero ser铆a perro1,
18
+
19
+ 00:20.600 --> 00:26.600
20
+ y mando crear lo que ser铆a el nuevo m茅todo,
21
+ nuevo m茅todo.
22
+
23
+ 00:26.600 --> 00:33.300
24
+ Como el m茅todo es pr谩cticamente una funci贸n,
25
+ entonces es igual a una funci贸n.
26
+
27
+ 00:33.300 --> 00:39.400
28
+ Y ya con la funci贸n, hacemos algo b谩sico como,
29
+
30
+ 00:39.400 --> 00:46.400
31
+ esta es, o m谩s bien, este es un m茅todo.
32
+
33
+ 00:46.400 --> 01:00.800
34
+ S煤per bien, si guardamos, y aqu铆 veo mi
35
+ instancia de perro1, puedo ver que ya est谩 ese nuevo m茅todo aqu铆.
36
+
37
+ 01:00.800 --> 01:07.500
38
+ Perfecto, podr铆a incluso generar perro1.
39
+ nuevo m茅todo,
40
+
41
+ 01:07.500 --> 01:10.800
42
+ y me traer铆a el mensaje, justo como lo
43
+ acabamos de hacer.
44
+
45
+ 01:10.800 --> 01:15.900
46
+ Pero ahora, si yo tuviera m谩s instancias,
47
+ y si yo quisiera utilizar este nuevo m茅todo,
48
+
49
+ 01:15.900 --> 01:20.200
50
+ de esta forma lo que estoy haciendo,
51
+ por ejemplo,
52
+
53
+ 01:20.200 --> 01:23.600
54
+ mando llamar mi clase
55
+ constructora,
56
+
57
+ 01:23.600 --> 01:29.000
58
+ puedo ver que aqu铆 no est谩 ese m茅todo,
59
+ tengo nada m谩s correr y tengo nada m谩s emitir sonido,
60
+
61
+ 01:29.000 --> 01:33.200
62
+ y se me pregunt贸, 驴por qu茅? 驴por qu茅 no
63
+ est谩 si yo acabo de generar este nuevo m茅todo?
64
+
65
+ 01:33.200 --> 01:38.900
66
+ Aqu铆 es donde el tema de prototype y la
67
+ herencia es muy importante que lo podamos entender.
68
+
69
+ 01:38.900 --> 01:46.200
70
+ Lo que estoy haciendo con esta l铆nea de
71
+ c贸digo, o con esta l铆nea de c贸digo, es, estoy agregando un nuevo m茅todo solo a la instancia.
72
+
73
+ 01:46.200 --> 01:54.200
74
+ Y yo lo que necesitar铆a hacer es agregar
75
+ ese m茅todo a mi clase constructora, o a la clase padre, que ser铆a la clase de perro.
76
+
77
+ 01:54.200 --> 01:57.700
78
+ Y la forma de hacer es un s铆, claro,
79
+ puedes venir a esta clase,
80
+
81
+ 01:57.700 --> 02:01.500
82
+ y aqu铆 t煤 podr铆as generar ese nuevo m茅todo,
83
+
84
+ 02:01.500 --> 02:05.200
85
+ posiblemente si ya tienes muchas
86
+ instancias y eso puede ser un poco peligroso,
87
+
88
+ 02:05.200 --> 02:11.400
89
+ pero lo que tienes que hacer es inyectar
90
+ ese nuevo m茅todo al prototipo que se genera autom谩ticamente
91
+
92
+ 02:11.400 --> 02:14.700
93
+ cuando yo estoy generando mi clase de perro.
94
+
95
+ 02:14.700 --> 02:18.200
96
+ Y la forma de hacerlo
97
+ es,
98
+
99
+ 02:18.200 --> 02:25.200
100
+ perro1.prototype,
101
+
102
+ 02:25.200 --> 02:33.000
103
+ estoy diciendo, perfecto, hay una cadena
104
+ que est谩 enlazando a perro1 con la clase de perro,
105
+
106
+ 02:33.000 --> 02:40.500
107
+ entonces al prototype de la cadena que
108
+ enlaza a mi clase padre, a esa clase,
109
+
110
+ 02:40.500 --> 02:47.700
111
+ necesito que le inyectes lo que ser铆a,
112
+ por ejemplo, un segundo m茅todo.
113
+
114
+ 02:47.700 --> 02:51.300
115
+ Y esto nada m谩s como ejemplo, para que
116
+ veas qu茅 pasa en este momento.
117
+
118
+ 02:51.300 --> 02:53.300
119
+ 驴C贸mo es una
120
+ funci贸n?
121
+
122
+ 02:53.300 --> 02:56.700
123
+ M茅todo es una funci贸n, entonces lo
124
+ trabajamos de igual forma.
125
+
126
+ 02:56.700 --> 03:00.800
127
+ Vamos a crear un m茅todo muy sencillo, console.
128
+ log,
129
+
130
+ 03:00.800 --> 03:07.800
131
+ que me regrese simplemente es otro nuevo
132
+ m茅todo.
133
+
134
+ 03:07.800 --> 03:17.100
135
+ Podemos guardar y si aqu铆 yo vengo y,
136
+ por ejemplo, veo qu茅 hay ahorita en perro1,
137
+
138
+ 03:17.100 --> 03:23.400
139
+ tiene el m茅todo que nosotros estamos
140
+ generando, tiene, por ejemplo, todo lo que ya ten铆amos,
141
+
142
+ 03:23.400 --> 03:29.200
143
+ que viene en la parte de perro, pero si yo
144
+ lo que hago es perro1.
145
+
146
+ 03:29.200 --> 03:34.800
147
+ Y aqu铆 como se llam贸, segundo m茅todo,
148
+ que de hecho tenemos aqu铆 un typo,
149
+
150
+ 03:34.800 --> 03:42.500
151
+ vamos a poner segundo m茅todo, lo guardamos,
152
+
153
+ 03:42.500 --> 03:52.600
154
+ y entonces aqu铆 ser铆a.segundo m茅todo.
155
+
156
+ 03:52.600 --> 03:56.000
157
+ Aqu铆 hay un error muy importante y vamos a
158
+ explicarlo,
159
+
160
+ 03:56.000 --> 03:59.500
161
+ para poder entender y evitar que esto
162
+ vuelva a pasar.
163
+
164
+ 03:59.500 --> 04:03.200
165
+ Estoy en el c贸digo y lo que estoy haciendo
166
+ aqu铆 es, evidentemente,
167
+
168
+ 04:03.200 --> 04:08.100
169
+ ya que tengo mi instancia de perro, puedo
170
+ ver que no est谩 ese nuevo m茅todo.
171
+
172
+ 04:08.100 --> 04:09.700
173
+ 驴Qu茅 est谩
174
+ pasando?
175
+
176
+ 04:09.700 --> 04:14.800
177
+ Lo que estoy viendo es que estoy
178
+ intentando agregarle un nuevo m茅todo
179
+
180
+ 04:14.800 --> 04:18.300
181
+ al prototipo de una
182
+ instancia.
183
+
184
+ 04:18.300 --> 04:22.300
185
+ Y lo que yo te coment茅 es que los prototipos,
186
+
187
+ 04:22.300 --> 04:28.100
188
+ este tipo de m茅todo de prototype, solo se
189
+ crea con las clases
190
+
191
+ 04:28.100 --> 04:30.600
192
+ o las funciones
193
+ constructoras.
194
+
195
+ 04:30.600 --> 04:35.900
196
+ Entonces esto no va a funcionar nunca
197
+ porque la instancia no tiene un prototipo.
198
+
199
+ 04:35.900 --> 04:43.400
200
+ Si venimos aqu铆, ponemos perro1.prototype,
201
+
202
+ 04:43.400 --> 04:48.400
203
+ me sale undefined, es de, oye, esto no existe,
204
+ no est谩 definido.
205
+
206
+ 04:48.400 --> 04:54.200
207
+ Si venimos aqu铆,
208
+ perro.prototype,
209
+
210
+ 04:54.200 --> 04:57.500
211
+ me est谩 regresando un prototipo, me est谩
212
+ regresando un prototipo
213
+
214
+ 04:57.500 --> 05:02.000
215
+ con los m茅todos que trae perro que se
216
+ pueden compartir.
217
+
218
+ 05:02.000 --> 05:05.000
219
+ Entonces este error es
220
+ com煤n.
221
+
222
+ 05:05.000 --> 05:07.900
223
+ Te va a pasar, me pas贸 a
224
+ m铆.
225
+
226
+ 05:07.900 --> 05:11.300
227
+ La forma correcta de agregar una instancia,
228
+
229
+ 05:11.300 --> 05:15.600
230
+ por ejemplo, de agregar un m茅todo nuevo a
231
+ las instancias,
232
+
233
+ 05:15.600 --> 05:19.300
234
+ es agregar el m茅todo al prototipo de una
235
+ clase
236
+
237
+ 05:19.300 --> 05:21.200
238
+ o una funci贸n
239
+ constructora.
240
+
241
+ 05:21.200 --> 05:24.700
242
+ Si hacemos esto y
243
+ guardamos,
244
+
245
+ 05:24.700 --> 05:31.700
246
+ bien, aqu铆 vengo, digo perro.prototype,
247
+
248
+ 05:34.600 --> 05:40.000
249
+ prototype, al momento de que me trae el
250
+ prototipo de la clase,
251
+
252
+ 05:40.000 --> 05:43.800
253
+ puedo ver que aqu铆 ya est谩 este nuevo m茅todo.
254
+
255
+ 05:43.800 --> 05:50.000
256
+ Y entonces si yo agarro perro1.segundo,
257
+
258
+ 05:50.000 --> 05:52.900
259
+ puedo ver que ya incluso
260
+ est谩,
261
+
262
+ 05:52.900 --> 05:54.500
263
+ y si lo mando
264
+ llamar,
265
+
266
+ 05:54.500 --> 05:57.700
267
+ entonces ahora s铆 ya me est谩 trayendo ese
268
+ console.log.
269
+
270
+ 05:57.700 --> 05:59.600
271
+ Entonces lo que est谩 pasando es
272
+ un,
273
+
274
+ 05:59.600 --> 06:03.700
275
+ si yo aqu铆 traigo, por ejemplo, perro1,
276
+
277
+ 06:03.700 --> 06:07.100
278
+ perro1, aqu铆 no trae ese nuevo
279
+ m茅todo
280
+
281
+ 06:07.100 --> 06:10.900
282
+ porque ese m茅todo lo estamos heredando
283
+ directamente
284
+
285
+ 06:10.900 --> 06:15.100
286
+ gracias al prototipo de nuestra clase padre.
287
+
288
+ 06:15.100 --> 06:18.900
289
+ Y lo est谩 heredando gracias a algo que se
290
+ le llama cadena.
291
+
292
+ 06:18.900 --> 06:20.900
293
+ Es una cadena de
294
+ prototipo.
295
+
296
+ 06:20.900 --> 06:23.500
297
+ Y esa cadena de prototipo es
298
+ un,
299
+
300
+ 06:23.500 --> 06:26.400
301
+ cuando yo mando llamar
302
+ perro1,
303
+
304
+ 06:26.400 --> 06:29.000
305
+ la cadena de prototipo le pregunta a la
306
+ instancia,
307
+
308
+ 06:29.000 --> 06:31.100
309
+ oye, 驴tienes este
310
+ m茅todo?
311
+
312
+ 06:31.100 --> 06:33.400
313
+ La instancia contesta, yo no la tengo.
314
+
315
+ 06:33.400 --> 06:38.100
316
+ Entonces sube a la cadena, a la clase padre,
317
+
318
+ 06:38.100 --> 06:40.400
319
+ que en este caso la clase padre es perro,
320
+
321
+ 06:40.400 --> 06:43.600
322
+ y le preguntar铆a, oye, 驴t煤 tienes ese
323
+ m茅todo?
324
+
325
+ 06:43.600 --> 06:46.100
326
+ La clase padre dir铆a, yo adentro no,
327
+
328
+ 06:46.100 --> 06:48.600
329
+ pero lo voy a checar con mi prototipo.
330
+
331
+ 06:48.600 --> 06:50.300
332
+ Y el prototipo le va a decir, s铆, aqu铆 est谩.
333
+
334
+ 06:50.300 --> 06:51.700
335
+ Y entonces lo
336
+ regresa,
337
+
338
+ 06:51.700 --> 06:55.000
339
+ y perro1 puede imprimir pr谩cticamente el
340
+ mensaje
341
+
342
+ 06:55.000 --> 06:57.200
343
+ o la acci贸n que tenga este
344
+ m茅todo.
345
+
346
+ 06:57.200 --> 06:59.700
347
+ A eso se le llama cadena de prototipo.
348
+
349
+ 06:59.700 --> 07:03.500
350
+ Ahora, para poder explicar
351
+ visualmente
352
+
353
+ 07:03.500 --> 07:06.000
354
+ a lo que me refiero con cadena de prototipo,
355
+
356
+ 07:06.000 --> 07:09.000
357
+ voy aqu铆 a copiar un c贸digo
358
+ r谩pido.
359
+
360
+ 07:09.000 --> 07:11.100
361
+ Te lo voy a explicar, este c贸digo no
362
+ importa mucho,
363
+
364
+ 07:11.100 --> 07:13.500
365
+ es nada m谩s para que pueda imprimir
366
+ yo
367
+
368
+ 07:13.500 --> 07:16.700
369
+ esta cadena de prototipado que t煤 puedas
370
+ verlo de forma visual.
371
+
372
+ 07:16.700 --> 07:19.700
373
+ Pero te lo explico, estoy generando una
374
+ variable let,
375
+
376
+ 07:19.700 --> 07:22.400
377
+ que se llama el prototipo
378
+ actual.
379
+
380
+ 07:22.400 --> 07:25.300
381
+ Y la forma de llegar al prototipo
382
+ actual
383
+
384
+ 07:25.300 --> 07:28.500
385
+ es
386
+ object.getPrototypeOf.
387
+
388
+ 07:28.500 --> 07:32.100
389
+ Y le estoy pidiendo, oye, al objeto global,
390
+
391
+ 07:32.100 --> 07:37.200
392
+ dame el prototipo de
393
+ perro1.
394
+
395
+ 07:37.200 --> 07:40.400
396
+ Como perro es una instancia, perro1 es una
397
+ instancia,
398
+
399
+ 07:40.400 --> 07:43.400
400
+ no me va a regresar un prototipo porque no
401
+ tiene,
402
+
403
+ 07:43.400 --> 07:47.200
404
+ pero entonces va a buscar cu谩l es el
405
+ prototipo del padre,
406
+
407
+ 07:47.200 --> 07:49.800
408
+ que en este caso va a ser
409
+ perro.
410
+
411
+ 07:49.800 --> 07:52.000
412
+ Entonces voy a generar un
413
+ for,
414
+
415
+ 07:52.000 --> 07:54.000
416
+ y en ese for lo que voy a estar
417
+ haciendo
418
+
419
+ 07:54.000 --> 07:56.400
420
+ es voy a estar guardando en esta
421
+ variable
422
+
423
+ 07:56.400 --> 07:59.800
424
+ todos los prototipos que est谩n encadenados.
425
+
426
+ 07:59.800 --> 08:01.500
427
+ Esta cadena de
428
+ prototipado,
429
+
430
+ 08:01.500 --> 08:04.200
431
+ todos los prototipos hasta llegar a un nul.
432
+
433
+ 08:04.200 --> 08:06.900
434
+ Entonces la primera me va a regresar perro1,
435
+
436
+ 08:06.900 --> 08:09.100
437
+ la segunda me va a regresar el perro,
438
+
439
+ 08:09.100 --> 08:11.100
440
+ la tercera me va a regresar el animal,
441
+
442
+ 08:11.100 --> 08:15.400
443
+ que es como la clase de la que extiende el
444
+ perro,
445
+
446
+ 08:15.400 --> 08:18.300
447
+ la cuarta me va a regresar el object,
448
+
449
+ 08:18.300 --> 08:21.100
450
+ que es el objeto global, el objeto
451
+ padre
452
+
453
+ 08:21.100 --> 08:23.800
454
+ del cual se generan todos los objetos,
455
+
456
+ 08:23.800 --> 08:26.900
457
+ y object, como ya no extiende de nadie,
458
+
459
+ 08:26.900 --> 08:28.500
460
+ nos regresa pr谩cticamente un
461
+ nul.
462
+
463
+ 08:28.500 --> 08:31.400
464
+ Entonces hasta que llega un nul, deja de
465
+ imprimir.
466
+
467
+ 08:31.400 --> 08:33.600
468
+ Eso es todo lo que hace este c贸digo.
469
+
470
+ 08:33.600 --> 08:37.000
471
+ As铆 que vamos a darle
472
+ enter,
473
+
474
+ 08:37.000 --> 08:39.600
475
+ y ah铆 nos damos cuenta que ya
476
+ tenemos
477
+
478
+ 08:39.600 --> 08:41.500
479
+ tres objetos que nos est谩 regresando.
480
+
481
+ 08:41.500 --> 08:43.100
482
+ Si abrimos el
483
+ primero,
484
+
485
+ 08:43.100 --> 08:46.700
486
+ el primero podemos ver que es pr谩cticamente,
487
+
488
+ 08:46.700 --> 08:49.400
489
+ podemos ver aqu铆 que nos est谩
490
+ regresando
491
+
492
+ 08:49.400 --> 08:51.500
493
+ lo que ser铆a la clase de
494
+ perro.
495
+
496
+ 08:51.500 --> 08:54.100
497
+ 驴Por qu茅 no me est谩 regresando el
498
+ perro1?
499
+
500
+ 08:54.100 --> 08:56.300
501
+ Porque perro1, recordemos que es una
502
+ instancia,
503
+
504
+ 08:56.300 --> 08:58.100
505
+ no tiene un
506
+ prototipo.
507
+
508
+ 08:58.100 --> 09:01.800
509
+ El prototype solo viene con clases
510
+ constructoras
511
+
512
+ 09:01.800 --> 09:03.700
513
+ o funciones
514
+ constructoras.
515
+
516
+ 09:03.700 --> 09:05.800
517
+ Es la primera funci贸n
518
+ constructora
519
+
520
+ 09:05.800 --> 09:09.200
521
+ de la cual est谩 ligado perro1, que tenemos
522
+ ac谩.
523
+
524
+ 09:10.200 --> 09:12.400
525
+ Perro1 est谩 ligada a la funci贸n
526
+ constructora
527
+
528
+ 09:12.400 --> 09:14.400
529
+ o al prototype de
530
+ perro.
531
+
532
+ 09:14.400 --> 09:17.300
533
+ Perfecto, ahora le va a preguntar el c贸digo.
534
+
535
+ 09:17.300 --> 09:21.100
536
+ Tu perro clase, 驴a qu茅 clase est谩s
537
+ ligada?
538
+
539
+ 09:21.100 --> 09:24.300
540
+ 驴Cu谩l es la cadena, la clase que tienes
541
+ arriba?
542
+
543
+ 09:24.300 --> 09:26.400
544
+ Si abrimos, nos vamos a dar
545
+ cuenta
546
+
547
+ 09:26.400 --> 09:27.600
548
+ que es la clase de
549
+ animal.
550
+
551
+ 09:27.600 --> 09:30.900
552
+ Y s铆, si venimos aqu铆, nuestra clase de
553
+ perro
554
+
555
+ 09:30.900 --> 09:32.700
556
+ extiende de la clase de
557
+ animal.
558
+
559
+ 09:32.700 --> 09:34.400
560
+ Entonces nos las trae
561
+ ac谩.
562
+
563
+ 09:34.400 --> 09:36.500
564
+ Y ahora le va a preguntar a la clase de
565
+ animal,
566
+
567
+ 09:36.500 --> 09:39.000
568
+ oye, tu cadena de
569
+ prototipo,
570
+
571
+ 09:39.000 --> 09:41.100
572
+ 驴cu谩l es la clase que tienes
573
+ arriba?
574
+
575
+ 09:41.100 --> 09:45.700
576
+ Si abrimos ac谩, podemos ver que es la
577
+ clase
578
+
579
+ 09:45.700 --> 09:49.100
580
+ o el objeto global que se llama object.
581
+
582
+ 09:49.100 --> 09:51.900
583
+ Todos los objetos que
584
+ construimos
585
+
586
+ 09:51.900 --> 09:53.900
587
+ extienden de este
588
+ objeto.
589
+
590
+ 09:53.900 --> 09:56.300
591
+ Este es el objeto global, es el objeto
592
+ principal
593
+
594
+ 09:56.300 --> 09:59.000
595
+ que nos regresa en navegador con JavaScript.
596
+
597
+ 09:59.000 --> 10:01.000
598
+ Y si aqu铆 intentamos nosotros
599
+ ver
600
+
601
+ 10:01.000 --> 10:05.500
602
+ c贸mo qu茅 es lo que est谩 arriba de este objeto,
603
+
604
+ 10:05.500 --> 10:07.200
605
+ podemos ver que pr谩cticamente es null.
606
+
607
+ 10:07.200 --> 10:09.500
608
+ Ya no hay nada m谩s arriba de este objeto.
609
+
610
+ 10:09.500 --> 10:12.700
611
+ Entonces a esto se le llama una cadena de
612
+ prototipos.
613
+
614
+ 10:12.700 --> 10:16.400
615
+ Que la cadena de prototipos es c贸mo los
616
+ objetos
617
+
618
+ 10:16.400 --> 10:18.600
619
+ est谩n
620
+ interconectados.
621
+
622
+ 10:18.600 --> 10:21.500
623
+ Esa interconexi贸n nos lleva a los
624
+ prototipos
625
+
626
+ 10:21.500 --> 10:24.800
627
+ que nos ayuda a llegar a los
628
+ m茅todos
629
+
630
+ 10:24.800 --> 10:26.700
631
+ de los cuales podemos
632
+ extender.
633
+
634
+ 10:26.700 --> 10:30.400
635
+ Y estos m茅todos son los m茅todos que se van
636
+ a heredar
637
+
638
+ 10:30.400 --> 10:31.800
639
+ para nuestras
640
+ instancias,
641
+
642
+ 10:31.800 --> 10:34.200
643
+ para que nosotros podamos hacer
644
+ uso
645
+
646
+ 10:34.200 --> 10:37.000
647
+ de instancias que no estamos creando,
648
+
649
+ 10:37.000 --> 10:39.300
650
+ que nos van a ayudar a resolver ciertas cosas,
651
+
652
+ 10:39.300 --> 10:57.300
653
+ pero que heredan de lo que son los objetos
654
+ padres.
655
+
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-index_58862723-5875-440e-973f-d6b69b7383c9.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class Animal {
2
+ constructor(nombre, tipo) {
3
+ this.nombre = nombre;
4
+ this.tipo = tipo;
5
+ }
6
+ emitirSonido() {
7
+ console.log("El animal emite un sonido");
8
+ }
9
+ }
10
+
11
+ class Perro extends Animal {
12
+ constructor(nombre, tipo, raza) {
13
+ super(nombre, tipo);
14
+ this.raza = raza;
15
+ }
16
+ emitirSonido() {
17
+ console.log("El perro ladra");
18
+ }
19
+ correr() {
20
+ console.log(`${this.nombre} corre alegremente`);
21
+ }
22
+ }
23
+
24
+ const perro1 = new Perro("Bobby", "Perro", "Pug");
25
+
26
+ console.log(perro1);
27
+ perro1.correr();
28
+ perro1.emitirSonido();
29
+
30
+ perro1.nuevoMetodo = function () {
31
+ console.log("Este es un metodo");
32
+ };
33
+
34
+ Perro.prototype.segundoMetodo = function () {
35
+ console.log("Es otro nuevo metodo");
36
+ };
37
+
38
+ Animal.prototype.tercerMetodo = function () {
39
+ console.log("Un metodo m谩s");
40
+ };
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-index_f73e3a49-7ee5-4713-a9f9-2a9cc854b45c.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ class Animal {
2
+ constructor(nombre, tipo) {
3
+ this.nombre = nombre;
4
+ this.tipo = tipo;
5
+ }
6
+ emitirSonido() {
7
+ console.log("El animal emite un sonido");
8
+ }
9
+ }
10
+
11
+ class Perro extends Animal {
12
+ constructor(nombre, tipo, raza) {
13
+ super(nombre, tipo);
14
+ this.raza = raza;
15
+ }
16
+ emitirSonido() {
17
+ console.log("El perro ladra");
18
+ }
19
+ correr() {
20
+ console.log(`${this.nombre} corre alegremente`);
21
+ }
22
+ }
23
+
24
+ const perro1 = new Perro("Bobby", "Perro", "Pug");
25
+
26
+ console.log(perro1);
27
+ perro1.correr();
28
+ perro1.emitirSonido();
29
+
30
+ perro1.nuevoMetodo = function () {
31
+ console.log("Este es un metodo");
32
+ };
33
+
34
+ Perro.prototype.segundoMetodo = function () {
35
+ console.log("Es otro nuevo metodo");
36
+ };
37
+
38
+ Animal.prototype.tercerMetodo = function () {
39
+ console.log("Un metodo m谩s");
40
+ };
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Uso de this en Clases y Funciones Constructoras.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:35338336de2d1b72740320e4f9faf40447a450470aaf9c2ea129aa76e84cf88e
3
+ size 35158266
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Uso de this en Clases y Funciones Constructoras.vtt ADDED
@@ -0,0 +1,420 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:01.880
4
+ Vamos a hablar ahora de una palabra
5
+ reservada
6
+
7
+ 00:01.880 --> 00:04.240
8
+ que se llama this, que es muy
9
+ importante
10
+
11
+ 00:04.240 --> 00:06.640
12
+ y que se utiliza mucho en la parte de
13
+ clases
14
+
15
+ 00:06.640 --> 00:08.400
16
+ y de funciones
17
+ constructoras.
18
+
19
+ 00:10.240 --> 00:11.080
20
+ Estando
21
+ ac谩,
22
+
23
+ 00:15.960 --> 00:18.200
24
+ this es una palabra
25
+ reservada
26
+
27
+ 00:18.200 --> 00:22.760
28
+ que vamos a utilizar al momento de estar
29
+ trabajando con clases.
30
+
31
+ 00:22.760 --> 00:25.280
32
+ This per se, esta
33
+ palabra,
34
+
35
+ 00:25.280 --> 00:28.480
36
+ hace referencia a el objeto
37
+ mismo
38
+
39
+ 00:28.480 --> 00:31.760
40
+ o a la clase que estamos construyendo.
41
+
42
+ 00:31.760 --> 00:35.320
43
+ Que en este caso, recordemos, es la clase,
44
+
45
+ 00:35.320 --> 00:39.480
46
+ un como molde que estamos
47
+ haciendo
48
+
49
+ 00:39.480 --> 00:42.200
50
+ para poder construir despu茅s de esta misma
51
+ clase
52
+
53
+ 00:42.200 --> 00:45.560
54
+ diferentes instancias que se conviertan en
55
+ nuestros objetos.
56
+
57
+ 00:45.560 --> 00:48.440
58
+ Pero cuando estamos trabajando con la
59
+ clase
60
+
61
+ 00:48.440 --> 00:50.880
62
+ o con nuestra funci贸n
63
+ constructora,
64
+
65
+ 00:50.880 --> 00:54.240
66
+ nosotros utilizamos la palabra reservada
67
+ this
68
+
69
+ 00:54.240 --> 00:58.880
70
+ para poder tener referencia a los
71
+ par谩metros del constructor,
72
+
73
+ 00:58.880 --> 01:01.480
74
+ que es un m茅todo que est谩 dentro de la clase,
75
+
76
+ 01:01.480 --> 01:03.920
77
+ para que cuando creemos la instancia,
78
+
79
+ 01:03.920 --> 01:06.000
80
+ la gente, los usuarios, las
81
+ personas
82
+
83
+ 01:06.000 --> 01:08.680
84
+ que empiezan a crear la instancia o
85
+ nosotros mismos,
86
+
87
+ 01:08.680 --> 01:11.720
88
+ el valor de las propiedades del
89
+ constructor
90
+
91
+ 01:11.720 --> 01:14.400
92
+ puedan existir directamente en nuestro objeto.
93
+
94
+ 01:14.400 --> 01:16.400
95
+ Vamos a poner un ejemplo en
96
+ c贸digo.
97
+
98
+ 01:16.400 --> 01:19.680
99
+ Vamos a crear una clase que se llame Persona.
100
+
101
+ 01:19.680 --> 01:22.920
102
+ Vamos a crear el m茅todo de constructor.
103
+
104
+ 01:24.280 --> 01:25.480
105
+ Y en el m茅todo de
106
+ constructor,
107
+
108
+ 01:25.480 --> 01:27.240
109
+ vamos a poner los par谩metros que necesitamos.
110
+
111
+ 01:27.240 --> 01:30.440
112
+ Esta persona va a tener nombre y edad.
113
+
114
+ 01:33.240 --> 01:36.880
115
+ Aqu铆, para poder entonces en el
116
+ constructor
117
+
118
+ 01:36.880 --> 01:41.320
119
+ hacer referencia a el valor que se va a
120
+ inyectar aqu铆
121
+
122
+ 01:41.320 --> 01:44.360
123
+ para poder generar las instancias de
124
+ personas
125
+
126
+ 01:44.360 --> 01:45.920
127
+ que vamos a
128
+ construir,
129
+
130
+ 01:45.920 --> 01:47.960
131
+ vamos a utilizar
132
+ this.
133
+
134
+ 01:47.960 --> 01:52.960
135
+ Va a ser this nombre igual a nombre.
136
+
137
+ 01:52.960 --> 01:54.440
138
+ Diego, 驴qu茅 es
139
+ esto?
140
+
141
+ 01:54.440 --> 01:58.880
142
+ This hace referencia a este objeto,
143
+ pr谩cticamente.
144
+
145
+ 01:58.880 --> 02:01.760
146
+ Entonces, cuando nosotros vamos a crear
147
+ una instancia,
148
+
149
+ 02:01.760 --> 02:03.320
150
+ vamos a empezar aqu铆, por
151
+ ejemplo,
152
+
153
+ 02:03.320 --> 02:06.560
154
+ paso a paso con la creaci贸n de una
155
+ instancia nueva,
156
+
157
+ 02:06.560 --> 02:09.560
158
+ persona1 va a ser igual a
159
+ new,
160
+
161
+ 02:09.560 --> 02:12.360
162
+ palabra reservada, de
163
+ persona.
164
+
165
+ 02:13.360 --> 02:16.280
166
+ Entonces aqu铆 vamos a poner
167
+ que
168
+
169
+ 02:16.280 --> 02:21.280
170
+ vamos a poner que
171
+ Alice,
172
+
173
+ 02:21.280 --> 02:24.160
174
+ y tiene 25
175
+ a帽os.
176
+
177
+ 02:24.160 --> 02:29.160
178
+ Aqu铆 vamos a terminar de construir nuestro
179
+ constructor.edad
180
+
181
+ 02:29.440 --> 02:30.960
182
+ igual a
183
+ edad.
184
+
185
+ 02:32.320 --> 02:33.320
186
+ Perfecto.
187
+
188
+ 02:33.320 --> 02:36.960
189
+ Entonces, estas tenemos ya nuestra clase.
190
+
191
+ 02:36.960 --> 02:39.520
192
+ Aqu铆 tenemos nuestra primera instancia.
193
+
194
+ 02:39.520 --> 02:42.840
195
+ Entonces, cuando nosotros utilizamos el
196
+ new persona,
197
+
198
+ 02:42.840 --> 02:45.160
199
+ lo que estamos haciendo es el
200
+ new
201
+
202
+ 02:45.160 --> 02:49.480
203
+ va pr谩cticamente a tomar estos
204
+ valores
205
+
206
+ 02:49.480 --> 02:51.440
207
+ para poderlos inyectar
208
+ aqu铆,
209
+
210
+ 02:51.440 --> 02:53.600
211
+ que son los par谩metros del constructor,
212
+
213
+ 02:53.600 --> 02:56.640
214
+ para que entonces cuando generemos una
215
+ persona
216
+
217
+ 02:56.640 --> 02:58.360
218
+ con este
219
+ constructor,
220
+
221
+ 02:58.360 --> 03:00.840
222
+ podamos agregarle el
223
+ nombre
224
+
225
+ 03:00.840 --> 03:04.600
226
+ y podamos agregarle la edad a nuestro objeto,
227
+
228
+ 03:04.600 --> 03:06.440
229
+ que en este caso es
230
+ persona1.
231
+
232
+ 03:06.440 --> 03:08.960
233
+ Entonces, esta
234
+ referencia,
235
+
236
+ 03:08.960 --> 03:12.920
237
+ el this hace referencia a todo el objeto,
238
+
239
+ 03:12.920 --> 03:15.600
240
+ y pr谩cticamente la traducci贸n
241
+ ser铆a
242
+
243
+ 03:15.600 --> 03:17.840
244
+ la persona es
245
+ this,
246
+
247
+ 03:17.840 --> 03:20.960
248
+ el nombre de nuestro objeto
249
+ persona
250
+
251
+ 03:20.960 --> 03:24.280
252
+ va a ser el valor que se coloque en la
253
+ instancia.
254
+
255
+ 03:25.800 --> 03:28.760
256
+ La edad de nuestro objeto
257
+ persona
258
+
259
+ 03:28.760 --> 03:33.320
260
+ va a ser la edad que se coloque en la
261
+ instancia.
262
+
263
+ 03:33.320 --> 03:35.920
264
+ Y cuando nosotros mandamos
265
+ llamar,
266
+
267
+ 03:38.120 --> 03:39.800
268
+ por
269
+ ejemplo,
270
+
271
+ 03:39.800 --> 03:44.800
272
+ o mandamos imprimir persona1 y guardamos,
273
+
274
+ 03:46.720 --> 03:48.640
275
+ tenemos que nuestra
276
+ instancia,
277
+
278
+ 03:48.640 --> 03:52.800
279
+ nuestro primer objeto tiene un nombre y
280
+ tiene una edad.
281
+
282
+ 03:52.800 --> 03:54.880
283
+ Aqu铆 no hace referencia a
284
+ this,
285
+
286
+ 03:54.880 --> 03:57.840
287
+ pero pr谩cticamente si tuvi茅ramos que
288
+ manipular,
289
+
290
+ 03:57.840 --> 03:59.560
291
+ por ejemplo, si tuvi茅ramos que
292
+ manipular
293
+
294
+ 03:59.560 --> 04:02.880
295
+ con alg煤n m茅todo espec铆fico para esta
296
+ instancia,
297
+
298
+ 04:02.880 --> 04:04.840
299
+ donde fu茅ramos a utilizar el nombre o la edad,
300
+
301
+ 04:04.840 --> 04:06.240
302
+ har铆amos lo
303
+ mismo.
304
+
305
+ 04:06.240 --> 04:09.920
306
+ Si tuvi茅ramos que ponerle a persona un
307
+ m茅todo muy particular
308
+
309
+ 04:09.920 --> 04:12.560
310
+ que solo vaya a existir en
311
+ persona,
312
+
313
+ 04:12.560 --> 04:17.560
314
+ persona.nuevometodo como
315
+ funci贸n,
316
+
317
+ 04:18.880 --> 04:20.520
318
+ entonces agarramos como
319
+ funci贸n,
320
+
321
+ 04:22.200 --> 04:26.560
322
+ y vamos a imprimir de forma muy r谩pida.
323
+
324
+ 04:26.560 --> 04:31.360
325
+ Como vamos a utilizar el valor de una
326
+ propiedad del objeto,
327
+
328
+ 04:31.360 --> 04:32.240
329
+ va a
330
+ ser,
331
+
332
+ 04:32.240 --> 04:35.120
333
+ mi nombre
334
+ es,
335
+
336
+ 04:38.080 --> 04:39.200
337
+ y aqu铆 vamos a
338
+ colocar,
339
+
340
+ 04:39.200 --> 04:42.520
341
+ eso, los corchetes van ac谩
342
+ atr谩s,
343
+
344
+ 04:42.520 --> 04:44.720
345
+ this.nombre.
346
+
347
+ 04:45.760 --> 04:47.800
348
+ Y estamos utilizando aqu铆 el
349
+ this
350
+
351
+ 04:47.800 --> 04:52.800
352
+ porque hace referencia en este momento a
353
+ nuestra instancia.
354
+
355
+ 04:53.200 --> 04:54.680
356
+ Entonces va a
357
+ ser,
358
+
359
+ 04:54.680 --> 04:55.880
360
+ mi nombre
361
+ es,
362
+
363
+ 04:55.880 --> 04:59.960
364
+ mi nombre es el nombre de la instancia
365
+ persona1
366
+
367
+ 04:59.960 --> 05:02.000
368
+ que estamos colocando en este momento.
369
+
370
+ 05:02.000 --> 05:04.480
371
+ Es el momento de darle
372
+ salvar.
373
+
374
+ 05:04.480 --> 05:07.200
375
+ Venimos aqu铆 y ponemos
376
+ persona1
377
+
378
+ 05:08.120 --> 05:11.480
379
+ y damos nuevo
380
+ m茅todo.
381
+
382
+ 05:13.200 --> 05:15.800
383
+ Enter, y me regresa mi nombre es
384
+ Alice
385
+
386
+ 05:15.800 --> 05:18.440
387
+ porque el this de aqu铆 est谩 haciendo
388
+ referencia
389
+
390
+ 05:18.440 --> 05:20.920
391
+ a esta instancia que ya tiene un nombre,
392
+
393
+ 05:20.920 --> 05:22.400
394
+ nosotros ya se lo
395
+ colocamos.
396
+
397
+ 05:23.280 --> 05:26.240
398
+ Entonces es la forma en la que vamos a
399
+ utilizar this
400
+
401
+ 05:26.240 --> 05:28.760
402
+ al momento de estar construyendo
403
+ clases
404
+
405
+ 05:28.760 --> 05:30.240
406
+ o funciones
407
+ constructoras,
408
+
409
+ 05:30.240 --> 05:31.960
410
+ y es la forma en la que lo vamos a
411
+ utilizar
412
+
413
+ 05:31.960 --> 05:34.600
414
+ al momento de estar trabajando con
415
+ instancias
416
+
417
+ 05:34.600 --> 06:01.600
418
+ que vengan VSS
419
+ Classy.
420
+
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-index_125edb51-afc3-47ce-8f9c-070dd742b2cd.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ this --- class
3
+
4
+ this --- objeto -- class
5
+ */
6
+
7
+ class Persona {
8
+ constructor(nombre, edad) {
9
+ this.nombre = nombre;
10
+ this.edad = edad;
11
+ }
12
+ }
13
+
14
+ const persona1 = new Persona("Alice", 25);
15
+
16
+ console.log(persona1);
17
+
18
+ persona1.nuevoMetodo = function () {
19
+ console.log(`Mi nombre es ${this.nombre}`);
20
+ };
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-index_17803c0e-d45f-47e5-8773-08ff8a4a998d.js ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ this --- class
3
+
4
+ this --- objeto -- class
5
+ */
6
+
7
+ class Persona {
8
+ constructor(nombre, edad) {
9
+ this.nombre = nombre;
10
+ this.edad = edad;
11
+ }
12
+ }
13
+
14
+ const persona1 = new Persona("Alice", 25);
15
+
16
+ console.log(persona1);
17
+
18
+ persona1.nuevoMetodo = function () {
19
+ console.log(`Mi nombre es ${this.nombre}`);
20
+ };
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-Validaci贸n de Usuarios en una Red Social Algoritmo B谩sico.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:60766476d83a880c658bf4287a7b911f9c07cb8437ba842dceeaa0b2ac5178ee
3
+ size 91444195
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-Validaci贸n de Usuarios en una Red Social Algoritmo B谩sico.vtt ADDED
@@ -0,0 +1,1174 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:01.500
4
+ Vamos a hacer un
5
+ reto.
6
+
7
+ 00:01.500 --> 00:03.500
8
+ Vamos a pasar
9
+ all谩.
10
+
11
+ 00:03.500 --> 00:08.500
12
+ El d铆a de hoy, el reto es que logremos
13
+ construir
14
+
15
+ 00:08.500 --> 00:13.500
16
+ el algoritmo que nos va a ayudar a generar
17
+ una red social.
18
+
19
+ 00:13.500 --> 00:16.500
20
+ Y para eso, tengo cuatro pasos que son
21
+ requerimientos.
22
+
23
+ 00:16.500 --> 00:21.500
24
+ La intenci贸n es que puedas t煤 intentar
25
+ construir este reto.
26
+
27
+ 00:21.500 --> 00:23.000
28
+ Vamos a ver los
29
+ requerimientos.
30
+
31
+ 00:23.000 --> 00:26.500
32
+ El primero es, debe de haber una forma en
33
+ la que el usuario
34
+
35
+ 00:26.500 --> 00:30.500
36
+ deba poder ingresar su usuario y su
37
+ contrase帽a.
38
+
39
+ 00:30.500 --> 00:33.500
40
+ El sistema debe ser capaz de validar si el
41
+ usuario
42
+
43
+ 00:33.500 --> 00:36.500
44
+ y la contrase帽a ingresados por el
45
+ usuario
46
+
47
+ 00:36.500 --> 00:39.000
48
+ existen en la base de
49
+ datos.
50
+
51
+ 00:39.000 --> 00:40.500
52
+ Vamos, tengo una peque帽a base de
53
+ datos
54
+
55
+ 00:40.500 --> 00:43.500
56
+ que yo te voy a dejar una base de datos de
57
+ ejemplo que est谩 aqu铆.
58
+
59
+ 00:43.500 --> 00:46.000
60
+ Entonces, el sistema que vayamos a
61
+ construir
62
+
63
+ 00:46.000 --> 00:48.500
64
+ debe de venir a esta base de datos y
65
+ validar
66
+
67
+ 00:48.500 --> 00:51.500
68
+ si la contrase帽a que est谩 agregando el
69
+ usuario,
70
+
71
+ 00:51.500 --> 00:55.000
72
+ su usuario y contrase帽a, existen aqu铆.
73
+
74
+ 00:55.000 --> 00:58.500
75
+ Si existen aqu铆, entonces el usuario y
76
+ contrase帽a,
77
+
78
+ 00:58.500 --> 01:01.500
79
+ si son correctos, el sistema debe
80
+ mostrar
81
+
82
+ 01:01.500 --> 01:04.000
83
+ un mensaje de bienvenida como, hola,
84
+ 驴c贸mo est谩s?
85
+
86
+ 01:04.000 --> 01:06.000
87
+ Bienvenido, bla, bla,
88
+ bla.
89
+
90
+ 01:06.000 --> 01:08.500
91
+ Y mostrar el timeline del
92
+ usuario.
93
+
94
+ 01:08.500 --> 01:11.000
95
+ Esto viene de otra base de
96
+ datos.
97
+
98
+ 01:11.000 --> 01:13.000
99
+ Es una base de datos bastante sencilla.
100
+
101
+ 01:13.000 --> 01:18.000
102
+ Es como un array de objetos que trae un
103
+ peque帽o timeline.
104
+
105
+ 01:18.000 --> 01:19.000
106
+ Muy
107
+ sencillo.
108
+
109
+ 01:19.000 --> 01:22.000
110
+ Que trae usernames con nombres de
111
+ usuarios
112
+
113
+ 01:22.000 --> 01:23.500
114
+ que a lo mejor estoy
115
+ siguiendo
116
+
117
+ 01:23.500 --> 01:27.000
118
+ y ciertos mensajes que se han colocado.
119
+
120
+ 01:27.000 --> 01:29.500
121
+ Esto es una simplificaci贸n de una base de
122
+ datos
123
+
124
+ 01:29.500 --> 01:31.500
125
+ que se puede utilizar en una red
126
+ social
127
+
128
+ 01:31.500 --> 01:33.000
129
+ para tener un
130
+ timeline.
131
+
132
+ 01:33.000 --> 01:34.500
133
+ Pero esto puede ser tan
134
+ complejo
135
+
136
+ 01:34.500 --> 01:36.500
137
+ que se le puede poner, por
138
+ ejemplo,
139
+
140
+ 01:36.500 --> 01:38.000
141
+ la hora en la que se
142
+ public贸.
143
+
144
+ 01:38.000 --> 01:42.000
145
+ Se le pueden poner a lo mejor algunos
146
+ submensajes.
147
+
148
+ 01:42.000 --> 01:43.000
149
+ Esto puede
150
+ crecer.
151
+
152
+ 01:43.000 --> 01:46.000
153
+ Pero ahorita, en forma de simplificarlo,
154
+
155
+ 01:46.000 --> 01:49.500
156
+ esta es la peque帽a base de datos que vamos
157
+ a utilizar.
158
+
159
+ 01:49.500 --> 01:51.500
160
+ Bien, ahora, esto
161
+ pasa
162
+
163
+ 01:51.500 --> 01:55.000
164
+ si el usuario y la contrase帽a son correctos.
165
+
166
+ 01:55.000 --> 01:56.500
167
+ En caso de que
168
+ no,
169
+
170
+ 01:56.500 --> 01:59.000
171
+ si el usuario y la contrase帽a son incorrectos,
172
+
173
+ 01:59.000 --> 02:01.000
174
+ el sistema debe mostrar un mensaje de
175
+ error
176
+
177
+ 02:01.000 --> 02:04.000
178
+ de, oye, lo siento, pero a lo mejor,
179
+ por ejemplo,
180
+
181
+ 02:04.000 --> 02:06.000
182
+ tu usuario y contrase帽a no
183
+ existen
184
+
185
+ 02:06.000 --> 02:09.000
186
+ y no deber铆a mostrar ning煤n tipo de timeline.
187
+
188
+ 02:09.000 --> 02:11.000
189
+ Entonces, pausa
190
+ aqu铆
191
+
192
+ 02:11.000 --> 02:13.500
193
+ e intenta construir este
194
+ sistema
195
+
196
+ 02:13.500 --> 02:16.500
197
+ siguiendo estos
198
+ requerimientos.
199
+
200
+ 02:16.500 --> 02:18.000
201
+ 驴C贸mo har铆as para que el
202
+ usuario
203
+
204
+ 02:18.000 --> 02:20.000
205
+ pueda ingresar a un usuario y
206
+ contrase帽a?
207
+
208
+ 02:20.000 --> 02:22.500
209
+ 驴C贸mo har铆as para que el sistema que
210
+ construyamos
211
+
212
+ 02:22.500 --> 02:24.500
213
+ pueda validar ese usuario y
214
+ contrase帽a
215
+
216
+ 02:24.500 --> 02:27.000
217
+ en esta base de
218
+ datos?
219
+
220
+ 02:27.000 --> 02:29.000
221
+ Para que la puedas
222
+ ver.
223
+
224
+ 02:29.000 --> 02:31.000
225
+ Y despu茅s, una vez que se
226
+ valide,
227
+
228
+ 02:31.000 --> 02:32.000
229
+ si es
230
+ correcto,
231
+
232
+ 02:32.000 --> 02:35.000
233
+ 驴c贸mo har铆as para mostrar en la
234
+ consola
235
+
236
+ 02:35.000 --> 02:40.000
237
+ el timeline que es esta otra base de
238
+ datos?
239
+
240
+ 02:40.000 --> 02:41.000
241
+ Si no es
242
+ correcto,
243
+
244
+ 02:41.000 --> 02:43.000
245
+ deber谩 demostrar entonces un
246
+ mensaje
247
+
248
+ 02:43.000 --> 02:44.500
249
+ que sea un lo
250
+ siento,
251
+
252
+ 02:44.500 --> 02:46.000
253
+ tu usuario no
254
+ existe
255
+
256
+ 02:46.000 --> 02:47.500
257
+ o tu contrase帽a es
258
+ incorrecta
259
+
260
+ 02:47.500 --> 02:49.000
261
+ y no deber谩 mostrar
262
+ nada.
263
+
264
+ 02:49.000 --> 02:50.000
265
+ Pausa.
266
+
267
+ 02:50.000 --> 02:51.000
268
+ Y si logras
269
+ hacerlo,
270
+
271
+ 02:51.000 --> 02:53.000
272
+ comp谩rtelo en los
273
+ comentarios.
274
+
275
+ 02:58.000 --> 02:59.000
276
+ Listo, 驴qu茅
277
+ tal?
278
+
279
+ 02:59.000 --> 03:00.000
280
+ 驴Te cost贸
281
+ trabajo?
282
+
283
+ 03:00.000 --> 03:01.500
284
+ En caso de que no lo hayas
285
+ logrado,
286
+
287
+ 03:01.500 --> 03:02.500
288
+ no te
289
+ preocupes,
290
+
291
+ 03:02.500 --> 03:05.000
292
+ vamos a trabajar con eso en este momento.
293
+
294
+ 03:05.000 --> 03:07.000
295
+ Vamos a los
296
+ requerimientos.
297
+
298
+ 03:07.000 --> 03:09.000
299
+ El primer requerimiento es el
300
+ usuario
301
+
302
+ 03:09.000 --> 03:11.500
303
+ debe poder ingresar su usuario y contrase帽a.
304
+
305
+ 03:11.500 --> 03:13.500
306
+ Y esto es nosotros darles una
307
+ opci贸n
308
+
309
+ 03:13.500 --> 03:16.500
310
+ de c贸mo ingresar un usuario y contrase帽a.
311
+
312
+ 03:16.500 --> 03:20.500
313
+ Voy ahorita a, por ejemplo, multar esta
314
+ base de datos.
315
+
316
+ 03:20.500 --> 03:23.000
317
+ Y esto lo voy a hacer con dos
318
+ let,
319
+
320
+ 03:23.000 --> 03:25.000
321
+ o m谩s bien
322
+ const,
323
+
324
+ 03:25.000 --> 03:32.000
325
+ que va a ser username igual a prompt,
326
+
327
+ 03:32.000 --> 03:39.000
328
+ que sea cu谩l es tu
329
+ usuario.
330
+
331
+ 03:39.000 --> 03:40.500
332
+ Y ya que es
333
+ esta,
334
+
335
+ 03:40.500 --> 03:42.500
336
+ voy a que viene
337
+ const,
338
+
339
+ 03:42.500 --> 03:47.000
340
+ que va a ser
341
+ password,
342
+
343
+ 03:47.000 --> 03:51.500
344
+ y esto va a ser igual a
345
+ prompt,
346
+
347
+ 03:51.500 --> 03:59.000
348
+ que sea cu谩l es tu
349
+ contrase帽a.
350
+
351
+ 04:00.500 --> 04:01.500
352
+ Perfecto.
353
+
354
+ 04:01.500 --> 04:04.500
355
+ Aqu铆 ya tenemos nosotros en el
356
+ sistema
357
+
358
+ 04:04.500 --> 04:06.500
359
+ la opci贸n en que el
360
+ usuario,
361
+
362
+ 04:06.500 --> 04:07.500
363
+ a trav茅s del
364
+ navegador,
365
+
366
+ 04:07.500 --> 04:09.000
367
+ nos pueda poner dos
368
+ strings
369
+
370
+ 04:09.000 --> 04:11.500
371
+ que nosotros guardemos en estas dos
372
+ variables
373
+
374
+ 04:11.500 --> 04:13.500
375
+ y que podamos utilizar
376
+ despu茅s.
377
+
378
+ 04:13.500 --> 04:15.500
379
+ Si doy guardar
380
+ aqu铆,
381
+
382
+ 04:15.500 --> 04:18.500
383
+ entonces puedo poner como
384
+ Diego
385
+
386
+ 04:18.500 --> 04:21.500
387
+ y que sea
388
+ abc.
389
+
390
+ 04:21.500 --> 04:23.000
391
+ Y estando
392
+ ac谩,
393
+
394
+ 04:23.000 --> 04:26.000
395
+ puedo poner
396
+ username,
397
+
398
+ 04:26.000 --> 04:28.000
399
+ y sale Diego,
400
+ perfecto.
401
+
402
+ 04:28.000 --> 04:31.500
403
+ Y aqu铆 puedo poner
404
+ password,
405
+
406
+ 04:31.500 --> 04:33.000
407
+ y ah铆 sale
408
+ abc.
409
+
410
+ 04:33.000 --> 04:34.000
411
+ Perfecto.
412
+
413
+ 04:34.000 --> 04:37.500
414
+ La primera, el primer punto ya est谩
415
+ completado.
416
+
417
+ 04:37.500 --> 04:39.500
418
+ Ahora, el punto n煤mero
419
+ dos,
420
+
421
+ 04:39.500 --> 04:41.500
422
+ el sistema es ser capaz de
423
+ validar
424
+
425
+ 04:41.500 --> 04:44.500
426
+ si el usuario y la contrase帽a que ingres贸
427
+ el usuario
428
+
429
+ 04:44.500 --> 04:46.500
430
+ existen en la base de
431
+ datos.
432
+
433
+ 04:46.500 --> 04:48.500
434
+ Tendremos que hacer alg煤n
435
+ sistema
436
+
437
+ 04:48.500 --> 04:49.500
438
+ que nos ayude
439
+ a,
440
+
441
+ 04:49.500 --> 04:52.500
442
+ con estas dos variables que ya tenemos,
443
+
444
+ 04:52.500 --> 04:54.500
445
+ tenemos que hacer como un loop aqu铆,
446
+
447
+ 04:54.500 --> 04:57.000
448
+ una iteraci贸n en cada uno de estos objetos,
449
+
450
+ 04:57.000 --> 04:59.000
451
+ para validar si el
452
+ username
453
+
454
+ 04:59.000 --> 05:01.500
455
+ es igual al valor del username del primer
456
+ objeto,
457
+
458
+ 05:01.500 --> 05:03.500
459
+ y el password es igual al valor del
460
+ password
461
+
462
+ 05:03.500 --> 05:05.000
463
+ del primer
464
+ objeto.
465
+
466
+ 05:05.000 --> 05:06.500
467
+ Si no, lo mismo en el
468
+ segundo,
469
+
470
+ 05:06.500 --> 05:08.500
471
+ lo mismo en el
472
+ tercero.
473
+
474
+ 05:08.500 --> 05:10.000
475
+ Entonces, esto me suena
476
+ a,
477
+
478
+ 05:10.000 --> 05:12.000
479
+ vamos a hacer una
480
+ iteraci贸n
481
+
482
+ 05:12.000 --> 05:14.500
483
+ de estos objetos que est谩n en este array,
484
+
485
+ 05:14.500 --> 05:17.500
486
+ y vamos a validar si algo es igual a algo.
487
+
488
+ 05:17.500 --> 05:19.000
489
+ Y para
490
+ eso,
491
+
492
+ 05:19.000 --> 05:21.000
493
+ como ya tenemos aqu铆 el
494
+ valor,
495
+
496
+ 05:21.000 --> 05:22.500
497
+ la forma de poder
498
+ hacerlo
499
+
500
+ 05:22.500 --> 05:24.500
501
+ es generar una
502
+ funci贸n
503
+
504
+ 05:24.500 --> 05:27.500
505
+ que le pasamos estos dos valores como
506
+ par谩metros,
507
+
508
+ 05:27.500 --> 05:30.500
509
+ y que ya entonces generen un
510
+ for
511
+
512
+ 05:30.500 --> 05:32.500
513
+ que recorra este
514
+ objeto,
515
+
516
+ 05:32.500 --> 05:34.500
517
+ o que recorra este array de objetos,
518
+
519
+ 05:34.500 --> 05:37.500
520
+ y despu茅s un if que nos ayude a
521
+ validar
522
+
523
+ 05:37.500 --> 05:40.000
524
+ si nuestro username y
525
+ password
526
+
527
+ 05:40.000 --> 05:42.000
528
+ es igual al valor del username y
529
+ password
530
+
531
+ 05:42.000 --> 05:44.000
532
+ de cada uno de estos
533
+ objetos.
534
+
535
+ 05:44.000 --> 05:46.500
536
+ En caso de que s铆 en alguno de ellos,
537
+
538
+ 05:46.500 --> 05:48.000
539
+ se quedar谩 un
540
+ break,
541
+
542
+ 05:48.000 --> 05:50.500
543
+ y de aqu铆 entonces ya podemos avanzar.
544
+
545
+ 05:50.500 --> 05:52.000
546
+ As铆 que vamos para
547
+ all谩.
548
+
549
+ 05:52.000 --> 05:54.500
550
+ Empezamos con una
551
+ funci贸n.
552
+
553
+ 05:54.500 --> 05:58.500
554
+ Esta funci贸n va a requerir dos par谩metros.
555
+
556
+ 05:58.500 --> 06:00.000
557
+ De hecho, empezamos con la
558
+ funci贸n,
559
+
560
+ 06:00.000 --> 06:04.000
561
+ se va a llamar usuario
562
+ existente,
563
+
564
+ 06:04.000 --> 06:05.500
565
+ que va a tener dos
566
+ par谩metros,
567
+
568
+ 06:05.500 --> 06:10.500
569
+ que va a ser username y
570
+ password.
571
+
572
+ 06:11.500 --> 06:12.500
573
+ 驴Por
574
+ qu茅?
575
+
576
+ 06:12.500 --> 06:15.500
577
+ Porque es el valor de las dos
578
+ variables
579
+
580
+ 06:15.500 --> 06:17.500
581
+ que ya tenemos
582
+ ac谩.
583
+
584
+ 06:17.500 --> 06:19.500
585
+ Teniendo
586
+ eso,
587
+
588
+ 06:19.500 --> 06:21.500
589
+ entonces vamos a empezar
590
+ con,
591
+
592
+ 06:21.500 --> 06:23.500
593
+ tenemos que hacer que se
594
+ recorra
595
+
596
+ 06:23.500 --> 06:26.500
597
+ este array de
598
+ objetos.
599
+
600
+ 06:26.500 --> 06:29.500
601
+ Y para eso vamos a ocupar un
602
+ for.
603
+
604
+ 06:29.500 --> 06:33.500
605
+ Y en el for empezamos con nuestra let
606
+ i
607
+
608
+ 06:33.500 --> 06:36.500
609
+ igual a
610
+ cero.
611
+
612
+ 06:36.500 --> 06:38.500
613
+ Y aqu铆 entonces va a
614
+ ser
615
+
616
+ 06:38.500 --> 06:43.500
617
+ mientras i sea menor
618
+ a
619
+
620
+ 06:43.500 --> 06:47.500
621
+ usuario existente punto
622
+ length,
623
+
624
+ 06:47.500 --> 06:49.500
625
+ que es la longitud
626
+ de,
627
+
628
+ 06:49.500 --> 06:52.500
629
+ no, no, no, no es usuario que se extiende.
630
+
631
+ 06:52.500 --> 06:54.500
632
+ Esa tiene nuestra base de
633
+ datos.
634
+
635
+ 06:54.500 --> 06:57.500
636
+ User
637
+ database.
638
+
639
+ 06:57.500 --> 06:58.500
640
+ Entonces vamos
641
+ ac谩.
642
+
643
+ 06:58.500 --> 07:01.500
644
+ Mientras i sea menor a la
645
+ longitud
646
+
647
+ 07:01.500 --> 07:03.500
648
+ de nuestra base de
649
+ datos,
650
+
651
+ 07:03.500 --> 07:04.500
652
+ que es
653
+ esta,
654
+
655
+ 07:04.500 --> 07:07.500
656
+ en este momento tiene tres elementos,
657
+
658
+ 07:07.500 --> 07:11.500
659
+ entonces i tiene que incrementarse
660
+ uno
661
+
662
+ 07:11.500 --> 07:14.500
663
+ para poder lograr
664
+ como
665
+
666
+ 07:14.500 --> 07:17.500
667
+ el loop que est谩 buscado con
668
+ for.
669
+
670
+ 07:17.500 --> 07:19.500
671
+ Bien, ya
672
+ aqu铆,
673
+
674
+ 07:19.500 --> 07:20.500
675
+ entonces lo que tenemos que hacer es,
676
+
677
+ 07:20.500 --> 07:22.500
678
+ tenemos que
679
+ validar
680
+
681
+ 07:22.500 --> 07:25.500
682
+ si cada uno de los username y
683
+ password
684
+
685
+ 07:25.500 --> 07:27.500
686
+ que viene en nuestra base de
687
+ datos
688
+
689
+ 07:27.500 --> 07:29.500
690
+ es igual al username y
691
+ password
692
+
693
+ 07:29.500 --> 07:31.500
694
+ que ya nos pas贸 nuestro
695
+ usuario.
696
+
697
+ 07:31.500 --> 07:34.500
698
+ Y para eso vamos a utilizar un
699
+ if.
700
+
701
+ 07:34.500 --> 07:38.500
702
+ Con el if quiero validar dos
703
+ cosas.
704
+
705
+ 07:38.500 --> 07:40.500
706
+ Entonces vamos a empezar
707
+ con,
708
+
709
+ 07:40.500 --> 07:42.500
710
+ antes de ir aqu铆, vamos a nuestra ploca.
711
+
712
+ 07:42.500 --> 07:49.500
713
+ Tenemos nuestro user
714
+ database.
715
+
716
+ 07:49.500 --> 07:52.500
717
+ Vamos a
718
+ imprimirlo.
719
+
720
+ 07:52.500 --> 07:53.500
721
+ Tenemos un error, 驴por
722
+ qu茅?
723
+
724
+ 07:53.500 --> 07:56.500
725
+ Tenemos un if incompleto como syntaxes.
726
+
727
+ 07:56.500 --> 08:00.500
728
+ Voy a, de momento, comentarlo, guardo.
729
+
730
+ 08:00.500 --> 08:03.500
731
+ Entonces me sale, ok, vamos a poner Diego,
732
+
733
+ 08:03.500 --> 08:05.500
734
+ que sea
735
+ abs.
736
+
737
+ 08:05.500 --> 08:06.500
738
+ Bien.
739
+
740
+ 08:06.500 --> 08:08.500
741
+ Ya tenemos
742
+ eso.
743
+
744
+ 08:08.500 --> 08:11.500
745
+ Vamos a poner user
746
+ database.
747
+
748
+ 08:11.500 --> 08:15.500
749
+ Y me regresa ya un array de tres objetos.
750
+
751
+ 08:15.500 --> 08:17.500
752
+ Lo que quiero hacer es
753
+ validar
754
+
755
+ 08:17.500 --> 08:21.500
756
+ que cada uno de los
757
+ atributos
758
+
759
+ 08:21.500 --> 08:23.500
760
+ que tiene mis
761
+ objetos,
762
+
763
+ 08:23.500 --> 08:25.500
764
+ el valor de los
765
+ atributos,
766
+
767
+ 08:25.500 --> 08:27.500
768
+ es el valor que me
769
+ coloc贸
770
+
771
+ 08:27.500 --> 08:29.500
772
+ en las variables del
773
+ usuario.
774
+
775
+ 08:29.500 --> 08:31.500
776
+ Entonces para poder hacer
777
+ eso,
778
+
779
+ 08:31.500 --> 08:35.500
780
+ ser铆a user
781
+ database,
782
+
783
+ 08:35.500 --> 08:38.500
784
+ user
785
+ database,
786
+
787
+ 08:38.500 --> 08:41.500
788
+ y vamos a empezar con la posici贸n cero,
789
+
790
+ 08:41.500 --> 08:46.500
791
+ en donde vamos a pedir que nos regrese el
792
+ username.
793
+
794
+ 08:46.500 --> 08:48.500
795
+ Y con el
796
+ username,
797
+
798
+ 08:48.500 --> 08:51.500
799
+ vamos a hacer esto ac谩, por ejemplo,
800
+
801
+ 08:51.500 --> 08:54.500
802
+ y ahora vamos a poner lo
803
+ mismo,
804
+
805
+ 08:54.500 --> 08:55.500
806
+ user
807
+ data,
808
+
809
+ 08:55.500 --> 08:58.500
810
+ en la posici贸n
811
+ cero,
812
+
813
+ 08:58.500 --> 09:01.500
814
+ pero ahora con punto
815
+ password.
816
+
817
+ 09:01.500 --> 09:04.500
818
+ Entonces aqu铆 yo ya tengo el valor del
819
+ username
820
+
821
+ 09:04.500 --> 09:07.500
822
+ que est谩 en nuestra base de
823
+ datos,
824
+
825
+ 09:07.500 --> 09:08.500
826
+ que es el primer
827
+ objeto,
828
+
829
+ 09:08.500 --> 09:09.500
830
+ y tengo el valor del
831
+ password,
832
+
833
+ 09:09.500 --> 09:11.500
834
+ el primer objeto que est谩 en nuestra base
835
+ de datos.
836
+
837
+ 09:11.500 --> 09:14.500
838
+ Lo que tengo que hacer es validar que
839
+ estos dos
840
+
841
+ 09:14.500 --> 09:18.500
842
+ sean igual a lo que nos acaba de ingresar
843
+ el usuario
844
+
845
+ 09:18.500 --> 09:19.500
846
+ por los
847
+ prompts,
848
+
849
+ 09:19.500 --> 09:20.500
850
+ el user y el
851
+ password.
852
+
853
+ 09:20.500 --> 09:22.500
854
+ Entonces para poder hacer
855
+ eso,
856
+
857
+ 09:22.500 --> 09:24.500
858
+ regresamos aqu铆 a nuestro
859
+ if,
860
+
861
+ 09:24.500 --> 09:25.500
862
+ quitamos los
863
+ comentarios,
864
+
865
+ 09:25.500 --> 09:27.500
866
+ para poder hacer
867
+ eso,
868
+
869
+ 09:27.500 --> 09:30.500
870
+ voy a hacer user
871
+ database,
872
+
873
+ 09:30.500 --> 09:31.500
874
+ perfecto,
875
+
876
+ 09:31.500 --> 09:33.500
877
+ en la posici贸n
878
+ i,
879
+
880
+ 09:33.500 --> 09:36.500
881
+ porque i es el que se va a encargar de la
882
+ iteraci贸n,
883
+
884
+ 09:36.500 --> 09:39.500
885
+ punto
886
+ username,
887
+
888
+ 09:39.500 --> 09:42.500
889
+ que sea igual de forma
890
+ estricta
891
+
892
+ 09:42.500 --> 09:45.500
893
+ a el username que ya nos pas贸 nuestro
894
+ usuario ac谩.
895
+
896
+ 09:45.500 --> 09:50.500
897
+ Y voy a
898
+ poner,
899
+
900
+ 09:50.500 --> 09:53.500
901
+ vamos a validar user
902
+ database,
903
+
904
+ 09:53.500 --> 09:57.500
905
+ en la posici贸n
906
+ i,
907
+
908
+ 09:57.500 --> 09:59.500
909
+ punto
910
+ password,
911
+
912
+ 09:59.500 --> 10:02.500
913
+ que sea igual de forma
914
+ estricta
915
+
916
+ 10:02.500 --> 10:06.500
917
+ a el password que ya nos comparti贸 nuestro
918
+ usuario.
919
+
920
+ 10:06.500 --> 10:09.500
921
+ Entonces con esto ya estamos haciendo una
922
+ peque帽a validaci贸n
923
+
924
+ 10:09.500 --> 10:13.500
925
+ en el cual la posici贸n en la que est茅
926
+ i
927
+
928
+ 10:13.500 --> 10:16.500
929
+ nos va a traer siempre el valor de los
930
+ par谩metros
931
+
932
+ 10:16.500 --> 10:18.500
933
+ de los objetos en los que
934
+ est茅,
935
+
936
+ 10:18.500 --> 10:21.500
937
+ y en este momento en el if nosotros vamos
938
+ a validar
939
+
940
+ 10:21.500 --> 10:24.500
941
+ si esos valores son iguales a los
942
+ valores
943
+
944
+ 10:24.500 --> 10:26.500
945
+ que nos est谩 colocando nuestro usuario.
946
+
947
+ 10:26.500 --> 10:27.500
948
+ Si es
949
+ as铆,
950
+
951
+ 10:27.500 --> 10:28.500
952
+ solo para
953
+ probar,
954
+
955
+ 10:28.500 --> 10:32.500
956
+ de momento quiero que nos regrese un console.
957
+ log,
958
+
959
+ 10:35.500 --> 10:37.500
960
+ que
961
+ sea,
962
+
963
+ 10:38.500 --> 10:39.500
964
+ es
965
+ correcto.
966
+
967
+ 10:41.500 --> 10:42.500
968
+ Si
969
+ no,
970
+
971
+ 10:44.500 --> 10:45.500
972
+ else,
973
+
974
+ 10:45.500 --> 10:46.500
975
+ pues entonces no
976
+ existe
977
+
978
+ 10:46.500 --> 10:49.500
979
+ ninguno de los valores que nos regreso al
980
+ usuario
981
+
982
+ 10:49.500 --> 10:51.500
983
+ existen en la base de
984
+ datos.
985
+
986
+ 10:51.500 --> 10:55.500
987
+ Quiero que un
988
+ console.log
989
+
990
+ 10:55.500 --> 10:57.500
991
+ y que
992
+ sea,
993
+
994
+ 10:57.500 --> 10:59.500
995
+ no es
996
+ correcto.
997
+
998
+ 11:01.500 --> 11:05.500
999
+ Vamos de momento a guardar algo importante.
1000
+
1001
+ 11:05.500 --> 11:08.500
1002
+ Hay que mandar llamar nuestra
1003
+ funci贸n
1004
+
1005
+ 11:08.500 --> 11:10.500
1006
+ usuario
1007
+ existente,
1008
+
1009
+ 11:10.500 --> 11:11.500
1010
+ en donde, pues
1011
+ evidentemente,
1012
+
1013
+ 11:11.500 --> 11:13.500
1014
+ es el username y el
1015
+ password
1016
+
1017
+ 11:13.500 --> 11:16.500
1018
+ que estamos a punto de
1019
+ obtener.
1020
+
1021
+ 11:16.500 --> 11:17.500
1022
+ Con
1023
+ eso,
1024
+
1025
+ 11:17.500 --> 11:19.500
1026
+ vamos a poner aqu铆
1027
+ cancelar
1028
+
1029
+ 11:19.500 --> 11:21.500
1030
+ y vamos a guardar otra
1031
+ vez.
1032
+
1033
+ 11:22.500 --> 11:24.500
1034
+ Aqu铆, como
1035
+ error,
1036
+
1037
+ 11:24.500 --> 11:25.500
1038
+ Diego,
1039
+
1040
+ 11:25.500 --> 11:27.500
1041
+ ABC,
1042
+
1043
+ 11:27.500 --> 11:28.500
1044
+ y es no es
1045
+ correcto,
1046
+
1047
+ 11:28.500 --> 11:29.500
1048
+ hizo tres
1049
+ validaciones,
1050
+
1051
+ 11:29.500 --> 11:30.500
1052
+ lo podemos
1053
+ ver.
1054
+
1055
+ 11:30.500 --> 11:31.500
1056
+ Entonces en las
1057
+ tres,
1058
+
1059
+ 11:31.500 --> 11:32.500
1060
+ no es
1061
+ correcto.
1062
+
1063
+ 11:32.500 --> 11:34.500
1064
+ Aqu铆 si volvemos
1065
+ a,
1066
+
1067
+ 11:34.500 --> 11:35.500
1068
+ como
1069
+ refrescar,
1070
+
1071
+ 11:35.500 --> 11:38.500
1072
+ ponemos
1073
+ Andr茅s
1074
+
1075
+ 11:38.500 --> 11:40.500
1076
+ y ponemos uno, dos,
1077
+ tres,
1078
+
1079
+ 11:40.500 --> 11:42.500
1080
+ y sale es
1081
+ correcto.
1082
+
1083
+ 11:42.500 --> 11:43.500
1084
+ Pero aqu铆, 驴qu茅 est谩
1085
+ pasando?
1086
+
1087
+ 11:43.500 --> 11:44.500
1088
+ Nos
1089
+ dice,
1090
+
1091
+ 11:44.500 --> 11:45.500
1092
+ pues
1093
+ bueno,
1094
+
1095
+ 11:45.500 --> 11:47.500
1096
+ la primera validaci贸n es
1097
+ correcta,
1098
+
1099
+ 11:47.500 --> 11:50.500
1100
+ pero aqu铆 nosotros tenemos que poner la
1101
+ forma
1102
+
1103
+ 11:50.500 --> 11:53.500
1104
+ de que cuando esta validaci贸n sea correcta,
1105
+
1106
+ 11:53.500 --> 11:55.500
1107
+ ya no necesitamos que siga
1108
+ siendo
1109
+
1110
+ 11:55.500 --> 11:57.500
1111
+ una validaci贸n de lo que
1112
+ falta.
1113
+
1114
+ 11:57.500 --> 11:58.500
1115
+ En este
1116
+ caso,
1117
+
1118
+ 11:58.500 --> 12:00.500
1119
+ pusimos la informaci贸n del
1120
+ uno,
1121
+
1122
+ 12:00.500 --> 12:02.500
1123
+ por eso hace dos recorridos
1124
+ m谩s.
1125
+
1126
+ 12:02.500 --> 12:04.500
1127
+ Lo que podemos hacer en este
1128
+ momento
1129
+
1130
+ 12:04.500 --> 12:06.500
1131
+ es una vez que sea
1132
+ correcto,
1133
+
1134
+ 12:06.500 --> 12:08.500
1135
+ que genere un
1136
+ break
1137
+
1138
+ 12:08.500 --> 12:10.500
1139
+ para que se rompa pr谩cticamente de
1140
+ loop
1141
+
1142
+ 12:10.500 --> 12:11.500
1143
+ y ah铆
1144
+ listo.
1145
+
1146
+ 12:11.500 --> 12:14.500
1147
+ Ya no genere otro tipo de validaci贸n.
1148
+
1149
+ 12:14.500 --> 12:16.500
1150
+ Entonces aqu铆 si
1151
+ guardamos,
1152
+
1153
+ 12:16.500 --> 12:17.500
1154
+ nada m谩s para
1155
+ probar,
1156
+
1157
+ 12:17.500 --> 12:19.500
1158
+ Andr茅s,
1159
+
1160
+ 12:19.500 --> 12:20.500
1161
+ uno, dos,
1162
+ tres,
1163
+
1164
+ 12:20.500 --> 12:21.500
1165
+ y
1166
+ listo.
1167
+
1168
+ 12:21.500 --> 12:23.500
1169
+ Solo dice es
1170
+ correcto
1171
+
1172
+ 12:23.500 --> 12:43.500
1173
+ y ya no hace las otras dos validaciones.
1174
+
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-index_f210d63d-0f86-4336-a938-c7bdb343c5d6.js ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Requerimientos del reto:
3
+
4
+ 1. El usuario debe poder ingresar su usuario y contrase帽a
5
+ 2. El sistema debe ser capaz de validar si el usuario y contrase帽a ingresados por el usuario existen en la base de datos
6
+ 3. Si el usuario y contrase帽a son correctos, el sistema debe mostrar un mensaje de bienvenida y mostrar el timeline del usuario.
7
+ 4. Si el usuario y contrase帽a son incorrectos, el sistema debe mostrar un mensaje de error y no mostrar ningun timeline.
8
+
9
+ */
10
+
11
+ const usersDatabase = [
12
+ {
13
+ username: "andres",
14
+ password: "123",
15
+ },
16
+ {
17
+ username: "caro",
18
+ password: "456",
19
+ },
20
+ {
21
+ username: "mariana",
22
+ password: "789",
23
+ },
24
+ ];
25
+
26
+ const usersTimeline = [
27
+ {
28
+ username: "Estefany",
29
+ timeline: "Me encata Javascript!",
30
+ },
31
+ {
32
+ username: "Oscar",
33
+ timeline: "Bebeloper es lo mejor!",
34
+ },
35
+ {
36
+ username: "Mariana",
37
+ timeline: "A mi me gusta m谩s el caf茅 que el t茅",
38
+ },
39
+ {
40
+ username: "Andres",
41
+ timeline: "Yo hoy no quiero trabajar",
42
+ },
43
+ ];
44
+
45
+ const username = prompt("Cu谩l es tu usuario?");
46
+ const password = prompt("Cu谩l es tu contrase帽a?");
47
+
48
+ function usuarioExistente(username, password) {
49
+ for (let i = 0; i < usersDatabase.length; i++) {
50
+ if (
51
+ usersDatabase[i].username === username &&
52
+ usersDatabase[i].password === password
53
+ ) {
54
+ return true;
55
+ }
56
+ }
57
+ return false;
58
+ }
59
+
60
+ function signIn(username, password) {
61
+ if (usuarioExistente(username, password)) {
62
+ alert(`Bienvenido a tu cuenta ${username}`);
63
+ console.log(usersTimeline);
64
+ } else {
65
+ alert("Uuups, usuario o contrase帽a incorrectos!");
66
+ }
67
+ }
68
+
69
+ signIn(username, password);
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-Implementaci贸n de la Funci贸n SignIn y Validaci贸n de Usuario.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:953e7a7a7f8adab6fdd573c623c7240d5655ea48b75e317b1482916345e97354
3
+ size 74651481
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-Implementaci贸n de la Funci贸n SignIn y Validaci贸n de Usuario.vtt ADDED
@@ -0,0 +1,982 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:04.000
4
+ Ahora que sabemos que nuestra funci贸n
5
+ funciona,
6
+
7
+ 00:04.000 --> 00:06.700
8
+ que ya est谩 valideando la informaci贸n que
9
+ nos da el usuario,
10
+
11
+ 00:06.700 --> 00:09.400
12
+ nos dice si es correcto o no es correcto,
13
+
14
+ 00:09.400 --> 00:13.400
15
+ ahora tenemos que iniciar lo que es el
16
+ sign-in,
17
+
18
+ 00:13.400 --> 00:16.700
19
+ que es la parte donde el usuario, cuando
20
+ mete la informaci贸n,
21
+
22
+ 00:16.700 --> 00:19.800
23
+ haga esta validaci贸n, sin que nosotros
24
+ tengamos que
25
+
26
+ 00:19.800 --> 00:24.100
27
+ manda帽avar como en ese momento esto, aqu铆,
28
+
29
+ 00:24.100 --> 00:27.700
30
+ y pueda empezar a mostrar lo que es la
31
+ parte de el
32
+
33
+ 00:27.700 --> 00:29.400
34
+ timeline del
35
+ usuario.
36
+
37
+ 00:29.400 --> 00:32.600
38
+ En este caso, el usuario que se vaya a
39
+ conectar,
40
+
41
+ 00:32.600 --> 00:35.400
42
+ este es su timeline, no va a cambiar.
43
+
44
+ 00:35.400 --> 00:37.300
45
+ Pero esto puede ser un poco m谩s din谩mico,
46
+
47
+ 00:37.300 --> 00:40.200
48
+ pero eso ya es una estructura distinta.
49
+
50
+ 00:40.200 --> 00:42.500
51
+ Y si te interesa, esto puede ser parte del
52
+ reto,
53
+
54
+ 00:42.500 --> 00:43.700
55
+ t煤 vayas creciendo esta
56
+ parte.
57
+
58
+ 00:43.700 --> 00:46.500
59
+ Entonces vamos a una siguiente funci贸n.
60
+
61
+ 00:46.500 --> 00:49.100
62
+ Voy a borrar esto de
63
+ ac谩.
64
+
65
+ 00:49.100 --> 00:50.500
66
+ Aqu铆 tambi茅n voy a hacer un
67
+ cambio,
68
+
69
+ 00:50.500 --> 00:51.900
70
+ este console lo que voy a
71
+ quitar,
72
+
73
+ 00:51.900 --> 00:56.000
74
+ y le voy a poner a return
75
+ true,
76
+
77
+ 00:56.000 --> 00:58.300
78
+ que solo me interesa que me regrese un true,
79
+
80
+ 00:58.300 --> 01:01.200
81
+ para una validaci贸n que voy a hacer ac谩,
82
+
83
+ 01:01.200 --> 01:03.700
84
+ y return
85
+ false.
86
+
87
+ 01:03.700 --> 01:05.900
88
+ Perfecto.
89
+
90
+ 01:05.900 --> 01:07.100
91
+ Entonces venimos
92
+ aqu铆,
93
+
94
+ 01:07.100 --> 01:15.900
95
+ y la siguiente funci贸n es la funci贸n de
96
+ sign-in.
97
+
98
+ 01:15.900 --> 01:19.200
99
+ Esta funci贸n va a recibir de igual forma
100
+ dos par谩metros,
101
+
102
+ 01:19.200 --> 01:21.900
103
+ que son los par谩metros que estamos utilizando,
104
+
105
+ 01:21.900 --> 01:25.100
106
+ que es la informaci贸n que ya nos agreg贸
107
+ nuestro usuario.
108
+
109
+ 01:25.100 --> 01:28.500
110
+ As铆 que iniciamos con un
111
+ function,
112
+
113
+ 01:28.500 --> 01:30.300
114
+ se llame
115
+ sign-in,
116
+
117
+ 01:30.300 --> 01:33.300
118
+ y en este function lo que quiero hacer es,
119
+
120
+ 01:33.300 --> 01:37.700
121
+ voy a trabajar con un
122
+ if,
123
+
124
+ 01:37.700 --> 01:44.900
125
+ y este if va a mandar llamar esta primera
126
+ funci贸n.
127
+
128
+ 01:44.900 --> 01:47.400
129
+ Entonces al momento de que se inicie,
130
+
131
+ 01:47.400 --> 01:50.400
132
+ por ejemplo, el proceso de
133
+ sign-in,
134
+
135
+ 01:50.400 --> 01:52.900
136
+ se tiene que mandar llamar la funci贸n,
137
+
138
+ 01:52.900 --> 01:55.400
139
+ en donde se va a validar sin la
140
+ informaci贸n que nos va a dar
141
+
142
+ 01:55.400 --> 01:57.300
143
+ nuestro usuario por estos
144
+ prompts,
145
+
146
+ 01:57.300 --> 01:58.500
147
+ es
148
+ verdad,
149
+
150
+ 01:58.500 --> 02:02.200
151
+ en caso de que esa sea
152
+ verdad,
153
+
154
+ 02:02.200 --> 02:07.100
155
+ lo que quiero es que me genere un alert.
156
+
157
+ 02:07.100 --> 02:10.000
158
+ 驴Y esto por
159
+ qu茅?
160
+
161
+ 02:10.000 --> 02:13.200
162
+ Porque si regresamos a las instrucciones,
163
+
164
+ 02:13.200 --> 02:15.700
165
+ entonces si el
166
+ usuario,
167
+
168
+ 02:15.700 --> 02:17.100
169
+ debe ser capaz de
170
+ validar,
171
+
172
+ 02:17.100 --> 02:20.600
173
+ nuestro sistema debe validar si el usuario
174
+ existe en la base de datos.
175
+
176
+ 02:20.600 --> 02:22.900
177
+ Si el usuario
178
+ existe,
179
+
180
+ 02:22.900 --> 02:26.500
181
+ entonces el sistema debe mostrar un
182
+ mensaje de bienvenida,
183
+
184
+ 02:26.500 --> 02:28.000
185
+ y mostrar el
186
+ timeline,
187
+
188
+ 02:28.000 --> 02:30.400
189
+ que eso es lo que vamos a hacer en esta
190
+ nueva funci贸n.
191
+
192
+ 02:30.400 --> 02:32.100
193
+ Si el usuario no
194
+ existe,
195
+
196
+ 02:32.100 --> 02:34.000
197
+ entonces debe demostrar un mensaje de error,
198
+
199
+ 02:34.000 --> 02:36.300
200
+ y no debe mostrar
201
+ nada.
202
+
203
+ 02:36.300 --> 02:37.500
204
+ Entonces
205
+ aqu铆,
206
+
207
+ 02:37.500 --> 02:40.600
208
+ si esta validaci贸n es
209
+ true,
210
+
211
+ 02:40.600 --> 02:42.500
212
+ si aqu铆 me regresa
213
+ true,
214
+
215
+ 02:42.500 --> 02:44.900
216
+ lo que va a pasar es en el
217
+ alert,
218
+
219
+ 02:44.900 --> 02:47.700
220
+ evidentemente vamos a ponerle
221
+ tipo,
222
+
223
+ 02:47.700 --> 02:49.400
224
+ no, de hecho vamos a utilizar el nombre
225
+ del usuario,
226
+
227
+ 02:49.400 --> 02:51.000
228
+ para que sea m谩s
229
+ personalizado.
230
+
231
+ 02:51.000 --> 02:53.600
232
+ Eso les
233
+ gusta.
234
+
235
+ 02:53.600 --> 02:59.200
236
+ Bienvenido a tu
237
+ cuenta.
238
+
239
+ 02:59.200 --> 03:01.100
240
+ Y vamos a
241
+ ponerle,
242
+
243
+ 03:01.100 --> 03:03.600
244
+ username.
245
+
246
+ 03:03.600 --> 03:05.200
247
+ Haciendo
248
+ referencia,
249
+
250
+ 03:05.200 --> 03:09.200
251
+ a el username que nos va a poner en los
252
+ prompts.
253
+
254
+ 03:09.200 --> 03:11.100
255
+ Y ac谩, por
256
+ ejemplo,
257
+
258
+ 03:11.100 --> 03:14.800
259
+ vamos a poner un
260
+ console.log,
261
+
262
+ 03:14.800 --> 03:16.900
263
+ .log,
264
+
265
+ 03:16.900 --> 03:19.900
266
+ que nos regrese todo
267
+ el,
268
+
269
+ 03:19.900 --> 03:21.700
270
+ user,
271
+
272
+ 03:21.700 --> 03:23.000
273
+ timeline.
274
+
275
+ 03:23.000 --> 03:25.500
276
+ Perfecto.
277
+
278
+ 03:25.500 --> 03:26.900
279
+ Voy a,
280
+ mientras,
281
+
282
+ 03:26.900 --> 03:29.200
283
+ cancelar,
284
+ cancelar.
285
+
286
+ 03:29.200 --> 03:31.700
287
+ Porque le estoy pidiendo que me regrese el
288
+ user timeline.
289
+
290
+ 03:31.700 --> 03:33.200
291
+ User,
292
+
293
+ 03:33.200 --> 03:34.300
294
+ timeline.
295
+
296
+ 03:34.300 --> 03:41.700
297
+ Porque si es verdad, lo que quiero es que
298
+ me regrese esto.
299
+
300
+ 03:41.700 --> 03:43.100
301
+ Y ya esto se puede ir
302
+ acomodando,
303
+
304
+ 03:43.100 --> 03:45.200
305
+ pero quiero que me regrese el timeline,
306
+ 驴no?
307
+
308
+ 03:45.200 --> 03:47.100
309
+ Para que despu茅s nosotros
310
+ podamos,
311
+
312
+ 03:47.100 --> 03:49.900
313
+ a lo mejor con un poco m谩s de tiempo y
314
+ estructura,
315
+
316
+ 03:49.900 --> 03:51.900
317
+ imprimir
318
+ como,
319
+
320
+ 03:51.900 --> 03:53.500
321
+ Estefan铆a escribi贸
322
+ esto,
323
+
324
+ 03:53.500 --> 03:55.100
325
+ Oscar escribi贸
326
+ esto,
327
+
328
+ 03:55.100 --> 03:56.300
329
+ Mariana escribi贸
330
+ esto,
331
+
332
+ 03:56.300 --> 03:57.900
333
+ Andr茅s escribi贸
334
+ esto.
335
+
336
+ 03:57.900 --> 03:59.600
337
+ Por el momento quiero que me regrese esto,
338
+
339
+ 03:59.600 --> 04:01.000
340
+ para poderlo
341
+ ver.
342
+
343
+ 04:01.000 --> 04:02.900
344
+ Si no es
345
+ verdad,
346
+
347
+ 04:02.900 --> 04:05.900
348
+ si aqu铆 nos regresa entonces el false,
349
+
350
+ 04:05.900 --> 04:07.500
351
+ lo que
352
+ quiero,
353
+
354
+ 04:07.500 --> 04:10.000
355
+ es que entonces nos regrese
356
+ un,
357
+
358
+ 04:10.000 --> 04:13.100
359
+ mensaje de
360
+ error,
361
+
362
+ 04:13.100 --> 04:16.500
363
+ que es con min煤sculas,
364
+ alerts.
365
+
366
+ 04:16.500 --> 04:17.800
367
+ Y el mensaje error,
368
+ pues,
369
+
370
+ 04:17.800 --> 04:19.500
371
+ no tiene que estar ligado a ninguna variable,
372
+
373
+ 04:19.500 --> 04:21.100
374
+ entonces va a
375
+ ser,
376
+
377
+ 04:21.100 --> 04:22.500
378
+ ups,
379
+
380
+ 04:22.500 --> 04:24.200
381
+ y el ups
382
+ es,
383
+
384
+ 04:24.200 --> 04:25.500
385
+ usuario,
386
+
387
+ 04:25.500 --> 04:27.100
388
+ o,
389
+
390
+ 04:27.100 --> 04:29.200
391
+ contrase帽a,
392
+
393
+ 04:29.200 --> 04:34.900
394
+ incorrectos.
395
+
396
+ 04:34.900 --> 04:35.700
397
+ Perfecto.
398
+
399
+ 04:35.700 --> 04:37.500
400
+ Entonces, va a aparecer esa funci贸n,
401
+
402
+ 04:37.500 --> 04:40.200
403
+ de momento voy a poner como cancelar,
404
+ cancelar.
405
+
406
+ 04:40.200 --> 04:41.500
407
+ Ya tenemos todo, vamos a
408
+ repasar.
409
+
410
+ 04:41.500 --> 04:43.100
411
+ Tenemos la funci贸n de sign
412
+ in,
413
+
414
+ 04:43.100 --> 04:45.100
415
+ en donde le estamos pidiendo el usuario,
416
+
417
+ 04:45.100 --> 04:47.100
418
+ y la contrase帽a que nos
419
+ est谩,
420
+
421
+ 04:47.100 --> 04:49.200
422
+ generando nuestro
423
+ usuario.
424
+
425
+ 04:49.200 --> 04:50.300
426
+ Con los
427
+ prompts,
428
+
429
+ 04:50.300 --> 04:51.500
430
+ aqu铆
431
+ validamos,
432
+
433
+ 04:51.500 --> 04:53.700
434
+ en donde si el usuario existe en la base
435
+ de datos,
436
+
437
+ 04:53.700 --> 04:55.000
438
+ nos va a regresar un
439
+ true,
440
+
441
+ 04:55.000 --> 04:56.300
442
+ si nos regresa un
443
+ true,
444
+
445
+ 04:56.300 --> 04:57.400
446
+ entonces sale
447
+ un,
448
+
449
+ 04:57.400 --> 04:58.700
450
+ alerta de
451
+ bienvenido,
452
+
453
+ 04:58.700 --> 04:59.500
454
+ tal
455
+ usuario,
456
+
457
+ 04:59.500 --> 05:01.300
458
+ este es tu
459
+ timeline,
460
+
461
+ 05:01.300 --> 05:02.500
462
+ si es un
463
+ else,
464
+
465
+ 05:02.500 --> 05:04.000
466
+ que en caso de que sea un
467
+ false,
468
+
469
+ 05:04.000 --> 05:06.000
470
+ entonces es un ups, lo
471
+ siento,
472
+
473
+ 05:06.000 --> 05:08.100
474
+ aqu铆
475
+ es,
476
+
477
+ 05:08.100 --> 05:09.200
478
+ usuario,
479
+
480
+ 05:09.200 --> 05:10.300
481
+ y
482
+ contrase帽a,
483
+
484
+ 05:10.300 --> 05:11.400
485
+ son
486
+ incorrectos.
487
+
488
+ 05:11.400 --> 05:14.300
489
+ Entonces no tiene que regresar
490
+ absolutamente nada.
491
+
492
+ 05:14.300 --> 05:15.600
493
+ Y ahora lo que tenemos que
494
+ hacer,
495
+
496
+ 05:15.600 --> 05:16.400
497
+ es,
498
+
499
+ 05:16.400 --> 05:18.600
500
+ mandar llamar nuestra
501
+ funci贸n,
502
+
503
+ 05:18.600 --> 05:19.600
504
+ y,
505
+
506
+ 05:19.600 --> 05:21.600
507
+ pasar los par谩metros de la
508
+ misma,
509
+
510
+ 05:21.600 --> 05:23.400
511
+ solo para
512
+ corroborar.
513
+
514
+ 05:23.400 --> 05:24.600
515
+ Y ya con
516
+ esto,
517
+
518
+ 05:24.600 --> 05:26.300
519
+ si
520
+ guardamos,
521
+
522
+ 05:26.300 --> 05:27.100
523
+ vamos
524
+ a,
525
+
526
+ 05:27.100 --> 05:28.400
527
+ es
528
+ Diego,
529
+
530
+ 05:28.400 --> 05:31.700
531
+ y mi contrase帽a es
532
+ abc,
533
+
534
+ 05:31.700 --> 05:32.400
535
+ y es
536
+ ups,
537
+
538
+ 05:32.400 --> 05:35.000
539
+ usuario o contrase帽a
540
+ incorrectos.
541
+
542
+ 05:35.000 --> 05:37.100
543
+ Soltar,
544
+
545
+ 05:37.100 --> 05:38.800
546
+ y ser铆a
547
+ un,
548
+
549
+ 05:38.800 --> 05:41.200
550
+ vamos a ver cu谩les son los nombres que
551
+ tenemos,
552
+
553
+ 05:41.200 --> 05:43.000
554
+ eh,
555
+
556
+ 05:43.000 --> 05:44.600
557
+ un
558
+ caro,
559
+
560
+ 05:44.600 --> 05:46.500
561
+ y su contrase帽a
562
+ es,
563
+
564
+ 05:46.500 --> 05:48.800
565
+ 456.
566
+
567
+ 05:48.800 --> 05:49.500
568
+ Entonces,
569
+
570
+ 05:49.500 --> 05:51.700
571
+ ups, usuario o contrase帽a incorrectos.
572
+
573
+ 05:51.700 --> 05:52.700
574
+ Y este
575
+ c贸digo,
576
+
577
+ 05:52.700 --> 05:53.900
578
+ no va a
579
+ funcionar.
580
+
581
+ 05:53.900 --> 05:55.600
582
+ Ahorita a pesar de que
583
+ puse,
584
+
585
+ 05:55.600 --> 05:57.900
586
+ un usuario y contrase帽a
587
+ correctos,
588
+
589
+ 05:57.900 --> 05:59.100
590
+ me est谩 regresando
591
+ un,
592
+
593
+ 05:59.100 --> 06:01.400
594
+ el usuario o contrase帽a es incorrecto.
595
+
596
+ 06:01.400 --> 06:02.300
597
+ 驴Qu茅 est谩
598
+ pasando?
599
+
600
+ 06:02.300 --> 06:03.600
601
+ Vamos a ver
602
+ qu茅,
603
+
604
+ 06:03.600 --> 06:05.300
605
+ en el
606
+ c贸digo.
607
+
608
+ 06:05.300 --> 06:06.200
609
+ El que estamos
610
+ aqu铆,
611
+
612
+ 06:06.200 --> 06:07.900
613
+ vamos a darle a
614
+ aceptar,
615
+
616
+ 06:07.900 --> 06:09.100
617
+ eh,
618
+ evidentemente,
619
+
620
+ 06:09.100 --> 06:10.000
621
+ si yo vengo
622
+ ac谩,
623
+
624
+ 06:10.000 --> 06:10.900
625
+ y
626
+ pongo,
627
+
628
+ 06:10.900 --> 06:12.500
629
+ username,
630
+
631
+ 06:12.500 --> 06:13.700
632
+ tengo un
633
+ caro,
634
+
635
+ 06:13.700 --> 06:14.800
636
+ y si
637
+ pongo,
638
+
639
+ 06:14.800 --> 06:16.100
640
+ password,
641
+
642
+ 06:16.100 --> 06:18.600
643
+ tengo
644
+ 456.
645
+
646
+ 06:18.600 --> 06:20.000
647
+ Que esto es
648
+ justamente,
649
+
650
+ 06:20.000 --> 06:21.500
651
+ mi
652
+ usuario,
653
+
654
+ 06:21.500 --> 06:23.100
655
+ n煤mero
656
+ dos,
657
+
658
+ 06:23.100 --> 06:24.400
659
+ o n煤mero
660
+ uno,
661
+
662
+ 06:24.400 --> 06:25.300
663
+ en el
664
+ array,
665
+
666
+ 06:25.300 --> 06:27.100
667
+ 驴no? Si lo vemos como un
668
+ 铆ndice.
669
+
670
+ 06:27.100 --> 06:28.400
671
+ Pues, 驴qu茅 est谩 pasando
672
+ aqu铆?
673
+
674
+ 06:28.400 --> 06:32.600
675
+ Aqu铆 el problema viene en la validaci贸n
676
+ que estamos haciendo en este for.
677
+
678
+ 06:32.600 --> 06:34.100
679
+ El for lo que est谩
680
+ haciendo,
681
+
682
+ 06:34.100 --> 06:37.900
683
+ como estamos aqu铆 regresando un true o un
684
+ false,
685
+
686
+ 06:37.900 --> 06:38.700
687
+ esto,
688
+
689
+ 06:38.700 --> 06:39.700
690
+ pr谩cticamente,
691
+
692
+ 06:39.700 --> 06:41.500
693
+ lo que hace es
694
+ un,
695
+
696
+ 06:41.500 --> 06:44.700
697
+ el primer usuario se llama
698
+ caro,
699
+
700
+ 06:44.700 --> 06:48.600
701
+ y su contrase帽a es
702
+ 456,
703
+
704
+ 06:48.600 --> 06:50.000
705
+ entra la
706
+ validaci贸n,
707
+
708
+ 06:50.000 --> 06:52.000
709
+ como es un
710
+ false,
711
+
712
+ 06:52.000 --> 06:53.700
713
+ autom谩ticamente,
714
+
715
+ 06:53.700 --> 06:55.800
716
+ el for se
717
+ rompe,
718
+
719
+ 06:55.800 --> 06:58.700
720
+ y va a regresar un false
721
+ siempre.
722
+
723
+ 06:58.700 --> 07:00.400
724
+ Entonces, a pesar de
725
+ que,
726
+
727
+ 07:00.400 --> 07:01.700
728
+ yo tenga un
729
+ caro,
730
+
731
+ 07:01.700 --> 07:02.500
732
+ y
733
+ un,
734
+
735
+ 07:02.500 --> 07:04.000
736
+ y una contrase帽a
737
+ correcta,
738
+
739
+ 07:04.000 --> 07:07.400
740
+ ya no va a pasar a validar el segundo
741
+ elemento.
742
+
743
+ 07:07.400 --> 07:10.500
744
+ Y tampoco va a pasar a validar el tercer
745
+ elemento.
746
+
747
+ 07:10.500 --> 07:13.400
748
+ Solo va a validar el primer elemento.
749
+
750
+ 07:13.400 --> 07:15.700
751
+ Y si ese elemento es
752
+ verdadero,
753
+
754
+ 07:15.700 --> 07:18.100
755
+ me va a regresar el mensaje de bien.
756
+
757
+ 07:18.100 --> 07:20.100
758
+ Y el timeline que he estado buscando,
759
+
760
+ 07:20.100 --> 07:22.800
761
+ pero si este primer elemento no
762
+ es,
763
+
764
+ 07:22.800 --> 07:25.300
765
+ el usuario de
766
+ contrase帽a,
767
+
768
+ 07:25.300 --> 07:27.000
769
+ aqu铆 se va a romper el
770
+ bucle,
771
+
772
+ 07:27.000 --> 07:28.900
773
+ y ya no va a pasar a validar el resto.
774
+
775
+ 07:28.900 --> 07:31.200
776
+ Entonces, lo que tenemos que hacer es,
777
+
778
+ 07:31.200 --> 07:33.300
779
+ vamos a
780
+ sacar,
781
+
782
+ 07:33.300 --> 07:34.300
783
+ el
784
+ false,
785
+
786
+ 07:34.300 --> 07:35.300
787
+ del
788
+ for,
789
+
790
+ 07:35.300 --> 07:37.000
791
+ de este
792
+ bucle.
793
+
794
+ 07:37.000 --> 07:38.400
795
+ Vamos a quitar el
796
+ else.
797
+
798
+ 07:38.400 --> 07:39.700
799
+ Entonces,
800
+ aqu铆,
801
+
802
+ 07:39.700 --> 07:41.400
803
+ lo que vamos a hacer es
804
+ un,
805
+
806
+ 07:41.400 --> 07:43.200
807
+ si el usuario de
808
+ contrase帽a,
809
+
810
+ 07:43.200 --> 07:44.500
811
+ hace un match con
812
+ esto,
813
+
814
+ 07:44.500 --> 07:46.100
815
+ me va a regresar un
816
+ true,
817
+
818
+ 07:46.100 --> 07:47.900
819
+ porque est谩
820
+ ac谩.
821
+
822
+ 07:47.900 --> 07:49.300
823
+ Si no hace un
824
+ match,
825
+
826
+ 07:49.300 --> 07:50.700
827
+ va a seguir el
828
+ for,
829
+
830
+ 07:50.700 --> 07:52.300
831
+ al siguiente
832
+ elemento,
833
+
834
+ 07:52.300 --> 07:54.300
835
+ y va a validar si el usuario de contrase帽a,
836
+
837
+ 07:54.300 --> 07:56.000
838
+ se match con
839
+ esto.
840
+
841
+ 07:56.000 --> 07:57.100
842
+ Si hace un
843
+ true,
844
+
845
+ 07:57.100 --> 07:59.300
846
+ entonces aqu铆 se rompe el
847
+ for,
848
+
849
+ 07:59.300 --> 08:00.500
850
+ y me regresa un
851
+ true,
852
+
853
+ 08:00.500 --> 08:01.600
854
+ y este
855
+ true,
856
+
857
+ 08:01.600 --> 08:03.700
858
+ lo voy a tener aqu铆 como validaci贸n,
859
+
860
+ 08:03.700 --> 08:05.800
861
+ y va a entrar
862
+ este.
863
+
864
+ 08:05.800 --> 08:07.200
865
+ Si no hace un
866
+ true,
867
+
868
+ 08:07.200 --> 08:09.000
869
+ se va con el
870
+ tercero.
871
+
872
+ 08:09.000 --> 08:10.100
873
+ Si esto no
874
+ matcha,
875
+
876
+ 08:10.100 --> 08:12.100
877
+ entonces se sale ya del
878
+ for,
879
+
880
+ 08:12.100 --> 08:13.300
881
+ porque ya
882
+ est谩,
883
+
884
+ 08:13.300 --> 08:15.200
885
+ esta validaci贸n ya
886
+ termina,
887
+
888
+ 08:15.200 --> 08:17.200
889
+ y sale del for a un
890
+ false,
891
+
892
+ 08:17.200 --> 08:19.800
893
+ y entonces la funci贸n va a regresar el false,
894
+
895
+ 08:19.800 --> 08:22.100
896
+ que nos va a mandar a este
897
+ else.
898
+
899
+ 08:22.100 --> 08:24.100
900
+ Entonces ya con este
901
+ cambio,
902
+
903
+ 08:24.100 --> 08:26.400
904
+ al momento de
905
+ guardar,
906
+
907
+ 08:26.400 --> 08:27.700
908
+ vamos a poner
909
+ aqu铆,
910
+
911
+ 08:27.700 --> 08:29.300
912
+ Caro,
913
+
914
+ 08:29.300 --> 08:30.600
915
+ vamos a poner
916
+ aqu铆,
917
+
918
+ 08:30.600 --> 08:33.300
919
+ cuatro, cinco y
920
+ seis,
921
+
922
+ 08:33.300 --> 08:34.200
923
+ y ahora
924
+ s铆,
925
+
926
+ 08:34.200 --> 08:36.000
927
+ bienvenida a tu cuenta,
928
+ Caro,
929
+
930
+ 08:36.000 --> 08:38.600
931
+ y este es tu
932
+ timeline.
933
+
934
+ 08:38.600 --> 08:40.600
935
+ Ya tenemos aqu铆 nuestro
936
+ timeline.
937
+
938
+ 08:40.600 --> 08:42.000
939
+ Listo, y con
940
+ esto,
941
+
942
+ 08:42.000 --> 08:44.700
943
+ ya tienes todas las bases que necesitas,
944
+
945
+ 08:44.700 --> 08:46.700
946
+ para comenzar tu carrera como desarrolladora,
947
+
948
+ 08:46.700 --> 08:48.900
949
+ o desarrollador de
950
+ llaves.
951
+
952
+ 08:48.900 --> 08:49.900
953
+ No olvides practicar
954
+ mucho,
955
+
956
+ 08:49.900 --> 08:51.100
957
+ eso es muy
958
+ importante,
959
+
960
+ 08:51.100 --> 08:53.300
961
+ y ahorita no olvides subir tu proyecto,
962
+
963
+ 08:53.300 --> 08:55.000
964
+ o presentar el
965
+ examen,
966
+
967
+ 08:55.000 --> 08:56.000
968
+ y
969
+ evidentemente,
970
+
971
+ 08:56.000 --> 08:57.300
972
+ calificar este
973
+ curso.
974
+
975
+ 08:57.300 --> 08:58.500
976
+ Mi nombre es Diego de
977
+ Granda,
978
+
979
+ 08:58.500 --> 09:04.500
980
+ y estoy en redes sociales para lo que
981
+ necesites.
982
+
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-index_5665e02f-31fe-4c5f-a003-0f6fa407346f.js ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Requerimientos del reto:
3
+
4
+ 1. El usuario debe poder ingresar su usuario y contrase帽a
5
+ 2. El sistema debe ser capaz de validar si el usuario y contrase帽a ingresados por el usuario existen en la base de datos
6
+ 3. Si el usuario y contrase帽a son correctos, el sistema debe mostrar un mensaje de bienvenida y mostrar el timeline del usuario.
7
+ 4. Si el usuario y contrase帽a son incorrectos, el sistema debe mostrar un mensaje de error y no mostrar ningun timeline.
8
+
9
+ */
10
+
11
+ const usersDatabase = [
12
+ {
13
+ username: "andres",
14
+ password: "123",
15
+ },
16
+ {
17
+ username: "caro",
18
+ password: "456",
19
+ },
20
+ {
21
+ username: "mariana",
22
+ password: "789",
23
+ },
24
+ ];
25
+
26
+ const usersTimeline = [
27
+ {
28
+ username: "Estefany",
29
+ timeline: "Me encata Javascript!",
30
+ },
31
+ {
32
+ username: "Oscar",
33
+ timeline: "Bebeloper es lo mejor!",
34
+ },
35
+ {
36
+ username: "Mariana",
37
+ timeline: "A mi me gusta m谩s el caf茅 que el t茅",
38
+ },
39
+ {
40
+ username: "Andres",
41
+ timeline: "Yo hoy no quiero trabajar",
42
+ },
43
+ ];
44
+
45
+ const username = prompt("Cu谩l es tu usuario?");
46
+ const password = prompt("Cu谩l es tu contrase帽a?");
47
+
48
+ function usuarioExistente(username, password) {
49
+ for (let i = 0; i < usersDatabase.length; i++) {
50
+ if (
51
+ usersDatabase[i].username === username &&
52
+ usersDatabase[i].password === password
53
+ ) {
54
+ return true;
55
+ }
56
+ }
57
+ return false;
58
+ }
59
+
60
+ function signIn(username, password) {
61
+ if (usuarioExistente(username, password)) {
62
+ alert(`Bienvenido a tu cuenta ${username}`);
63
+ console.log(usersTimeline);
64
+ } else {
65
+ alert("Uuups, usuario o contrase帽a incorrectos!");
66
+ }
67
+ }
68
+
69
+ signIn(username, password);
subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-index_b9edb5bd-74c5-4aa1-a1cf-31873cf62ed2.js ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ Requerimientos del reto:
3
+
4
+ 1. El usuario debe poder ingresar su usuario y contrase帽a
5
+ 2. El sistema debe ser capaz de validar si el usuario y contrase帽a ingresados por el usuario existen en la base de datos
6
+ 3. Si el usuario y contrase帽a son correctos, el sistema debe mostrar un mensaje de bienvenida y mostrar el timeline del usuario.
7
+ 4. Si el usuario y contrase帽a son incorrectos, el sistema debe mostrar un mensaje de error y no mostrar ningun timeline.
8
+
9
+ */
10
+
11
+ const usersDatabase = [
12
+ {
13
+ username: "andres",
14
+ password: "123",
15
+ },
16
+ {
17
+ username: "caro",
18
+ password: "456",
19
+ },
20
+ {
21
+ username: "mariana",
22
+ password: "789",
23
+ },
24
+ ];
25
+
26
+ const usersTimeline = [
27
+ {
28
+ username: "Estefany",
29
+ timeline: "Me encata Javascript!",
30
+ },
31
+ {
32
+ username: "Oscar",
33
+ timeline: "Bebeloper es lo mejor!",
34
+ },
35
+ {
36
+ username: "Mariana",
37
+ timeline: "A mi me gusta m谩s el caf茅 que el t茅",
38
+ },
39
+ {
40
+ username: "Andres",
41
+ timeline: "Yo hoy no quiero trabajar",
42
+ },
43
+ ];
44
+
45
+ const username = prompt("Cu谩l es tu usuario?");
46
+ const password = prompt("Cu谩l es tu contrase帽a?");
47
+
48
+ function usuarioExistente(username, password) {
49
+ for (let i = 0; i < usersDatabase.length; i++) {
50
+ if (
51
+ usersDatabase[i].username === username &&
52
+ usersDatabase[i].password === password
53
+ ) {
54
+ return true;
55
+ }
56
+ }
57
+ return false;
58
+ }
59
+
60
+ function signIn(username, password) {
61
+ if (usuarioExistente(username, password)) {
62
+ alert(`Bienvenido a tu cuenta ${username}`);
63
+ console.log(usersTimeline);
64
+ } else {
65
+ alert("Uuups, usuario o contrase帽a incorrectos!");
66
+ }
67
+ }
68
+
69
+ signIn(username, password);
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Programaci贸n S铆ncrona y As铆ncrona en JavaScript.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2836334854951714aa334fd43a3ae1e91a3779c831853878770b2b246dc7764e
3
+ size 66942471
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Programaci贸n S铆ncrona y As铆ncrona en JavaScript.vtt ADDED
@@ -0,0 +1,409 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:04.500
4
+ Para poder entender lo que es programaci贸n
5
+ s铆ncrona y as铆ncrona en JavaScript,
6
+
7
+ 00:04.500 --> 00:09.000
8
+ primero vamos a hablar de c贸mo funciona
9
+ JavaScript Engine en el navegador.
10
+
11
+ 00:09.000 --> 00:12.400
12
+ Y para este tema hay dos puntos
13
+ fundamentales que hay que entender.
14
+
15
+ 00:12.400 --> 00:16.500
16
+ El primero es algo que se llama el memory
17
+ heap, y el segundo es el call stack.
18
+
19
+ 00:16.500 --> 00:21.600
20
+ El memory heap es el espacio en donde se
21
+ van a guardar todas las variables,
22
+
23
+ 00:21.600 --> 00:25.000
24
+ todas las funciones y objetos que creamos
25
+ o construimos en JavaScript,
26
+
27
+ 00:25.000 --> 00:28.200
28
+ y se van a estar guardando en el memory
29
+ heap de forma random.
30
+
31
+ 00:28.200 --> 00:31.400
32
+ Y el segundo, el call stack, es
33
+ pr谩cticamente la pila
34
+
35
+ 00:31.400 --> 00:36.400
36
+ donde se van a empezar a llamar cada una
37
+ de las funciones que tenemos que ejecutar en nuestro programa.
38
+
39
+ 00:36.400 --> 00:39.700
40
+ Por ejemplo, yo tengo una funci贸n que se
41
+ llama hola mundo,
42
+
43
+ 00:39.700 --> 00:43.000
44
+ y esa funci贸n manda a llamar otra funci贸n
45
+ que se llama mi nombre es Diego.
46
+
47
+ 00:43.000 --> 00:46.200
48
+ Este call stack lo que va a hacer es
49
+ mandar a llamar la primera funci贸n,
50
+
51
+ 00:46.200 --> 00:51.900
52
+ ejecuta hola mundo, y se manda a llamar la
53
+ segunda funci贸n, ejecuta mi nombre es Diego.
54
+
55
+ 00:51.900 --> 00:55.400
56
+ A esta funci贸n se le conoce como
57
+ programaci贸n simple.
58
+
59
+ 00:55.400 --> 00:58.900
60
+ Quiere decir que se est谩 trabajando una
61
+ tarea a la vez.
62
+
63
+ 00:58.900 --> 01:03.000
64
+ JavaScript funciona trabajando una tarea a
65
+ la vez,
66
+
67
+ 01:03.000 --> 01:06.600
68
+ y eso va a estar funcionando pr谩cticamente
69
+ en el call stack.
70
+
71
+ 01:06.600 --> 01:09.800
72
+ Y de aqu铆 puede haber un nombre que
73
+ posiblemente conoces,
74
+
75
+ 01:09.800 --> 01:11.800
76
+ que se llama stack
77
+ overflow.
78
+
79
+ 01:11.800 --> 01:14.000
80
+ Hay una p谩gina muy famosa con este nombre.
81
+
82
+ 01:14.000 --> 01:17.500
83
+ Pero esto es cuando llevamos nuestro stack
84
+ de tareas
85
+
86
+ 01:17.500 --> 01:22.200
87
+ a un punto en donde excede el n煤mero o la
88
+ memoria que tiene permitida
89
+
90
+ 01:22.200 --> 01:23.900
91
+ para poder ejecutar las
92
+ tareas.
93
+
94
+ 01:23.900 --> 01:27.700
95
+ Y lo que sucede es que pr谩cticamente
96
+ nuestro navegador deja de funcionar, crashea.
97
+
98
+ 01:27.700 --> 01:29.600
99
+ Tenemos que cerrarlo,
100
+ abrirlo,
101
+
102
+ 01:29.600 --> 01:32.200
103
+ para que vuelva a liberar la memoria que
104
+ ten铆a en este stack
105
+
106
+ 01:32.200 --> 01:34.800
107
+ y pueda funcionar de la forma en la que
108
+ nosotros esperamos.
109
+
110
+ 01:34.800 --> 01:38.600
111
+ Y ahora, cuando nosotros hablamos de
112
+ programaci贸n as铆ncrona,
113
+
114
+ 01:38.600 --> 01:41.300
115
+ JavaScript por defecto, como lo coment茅,
116
+
117
+ 01:41.300 --> 01:43.900
118
+ solo funciona de forma
119
+ s铆ncrona.
120
+
121
+ 01:43.900 --> 01:47.100
122
+ Pero s铆 tenemos forma de poder hacer que
123
+ JavaScript
124
+
125
+ 01:47.100 --> 01:51.000
126
+ pueda empezar a trabajar ciertas tareas de
127
+ forma as铆ncrona,
128
+
129
+ 01:51.000 --> 01:52.400
130
+ quiere decir en
131
+ simult谩neo.
132
+
133
+ 01:52.400 --> 01:54.000
134
+ Tenemos este c贸digo
135
+ ejemplo,
136
+
137
+ 01:54.000 --> 01:57.400
138
+ y la forma de hacerlo es entendiendo
139
+ bien
140
+
141
+ 01:57.400 --> 02:00.500
142
+ c贸mo funciona un poco m谩s el tema del
143
+ navegador
144
+
145
+ 02:00.500 --> 02:03.000
146
+ con ciertos factores muy, muy importantes.
147
+
148
+ 02:03.000 --> 02:05.700
149
+ Lo primero es tenemos el call stack.
150
+
151
+ 02:05.700 --> 02:08.500
152
+ Lo segundo tenemos la parte de las web APIs.
153
+
154
+ 02:08.500 --> 02:11.400
155
+ Las web APIs es lo que va a hacer que
156
+ JavaScript
157
+
158
+ 02:11.400 --> 02:15.500
159
+ pueda funcionar o se comporte como forma
160
+ as铆ncrona.
161
+
162
+ 02:15.500 --> 02:18.500
163
+ Al momento de que nosotros tenemos una
164
+ funci贸n
165
+
166
+ 02:18.500 --> 02:20.000
167
+ que es una web
168
+ API,
169
+
170
+ 02:20.000 --> 02:23.000
171
+ lo que hace es que la va a mandar a la
172
+ secci贸n de web API
173
+
174
+ 02:23.000 --> 02:25.500
175
+ y va a hacer que se ejecute en
176
+ simult谩neo
177
+
178
+ 02:25.500 --> 02:28.100
179
+ mientras el call stack sigue
180
+ sacando
181
+
182
+ 02:28.100 --> 02:29.700
183
+ las funciones que tiene
184
+ ah铆.
185
+
186
+ 02:29.700 --> 02:31.400
187
+ La web API lo que va a hacer es
188
+ un,
189
+
190
+ 02:31.400 --> 02:33.600
191
+ se va a resolver en ese
192
+ momento,
193
+
194
+ 02:33.600 --> 02:35.300
195
+ ya que termine de
196
+ resolverse,
197
+
198
+ 02:35.300 --> 02:37.000
199
+ lo que tenga que hacer en la funci贸n,
200
+
201
+ 02:37.000 --> 02:38.400
202
+ lo va a bajar al
203
+ queue,
204
+
205
+ 02:38.400 --> 02:40.600
206
+ que es pr谩cticamente una sala de espera,
207
+
208
+ 02:40.600 --> 02:42.300
209
+ y el even loop lo que va a hacer
210
+ es
211
+
212
+ 02:42.300 --> 02:44.600
213
+ va a estar preguntando al call stack,
214
+
215
+ 02:44.600 --> 02:45.800
216
+ oye, 驴ya est谩s
217
+ vac铆o?
218
+
219
+ 02:45.800 --> 02:47.500
220
+ Si el call stack ya est谩
221
+ vac铆o,
222
+
223
+ 02:47.500 --> 02:49.100
224
+ va a tomar lo que existe en el
225
+ queue
226
+
227
+ 02:49.100 --> 02:50.600
228
+ y lo va a regresar al call
229
+ stack
230
+
231
+ 02:50.600 --> 02:52.600
232
+ para que se pueda terminar de ejecutar.
233
+
234
+ 02:52.600 --> 02:53.600
235
+ Si no est谩
236
+ vac铆o,
237
+
238
+ 02:53.600 --> 02:56.600
239
+ va a mantener lo que est谩 en el queue en
240
+ espera
241
+
242
+ 02:56.600 --> 02:58.700
243
+ a que se logre liberar el call
244
+ stack
245
+
246
+ 02:58.700 --> 03:00.600
247
+ y en ese momento le va a dar
248
+ paso
249
+
250
+ 03:00.600 --> 03:03.500
251
+ para que la funci贸n que se tiene que
252
+ terminar de ejecutar
253
+
254
+ 03:03.500 --> 03:04.700
255
+ pueda pasar al call
256
+ stack
257
+
258
+ 03:04.700 --> 03:07.100
259
+ y en ese momento se termine de
260
+ ejecutar
261
+
262
+ 03:07.100 --> 03:08.300
263
+ todo nuestro
264
+ programa.
265
+
266
+ 03:08.300 --> 03:09.800
267
+ En este ejemplo podemos ver
268
+ que
269
+
270
+ 03:09.800 --> 03:11.500
271
+ se est谩 mandando a llamar la funci贸n de var.
272
+
273
+ 03:11.500 --> 03:13.300
274
+ La funci贸n de var manda a llamar una
275
+ funci贸n
276
+
277
+ 03:13.300 --> 03:14.900
278
+ que se llama
279
+ setTimeout,
280
+
281
+ 03:14.900 --> 03:16.800
282
+ que es una funci贸n que hace que
283
+ JavaScript
284
+
285
+ 03:16.800 --> 03:18.500
286
+ funcione de forma
287
+ as铆ncrona.
288
+
289
+ 03:18.500 --> 03:21.900
290
+ setTimeout lanza un consolo que se baja al
291
+ queue
292
+
293
+ 03:21.900 --> 03:24.200
294
+ y una vez que el call stack est谩 vac铆o,
295
+
296
+ 03:24.200 --> 03:26.100
297
+ ese queue llega al call
298
+ stack
299
+
300
+ 03:26.100 --> 03:30.100
301
+ y ejecuta entonces el consolo que ser铆a dos.
302
+
303
+ 03:30.100 --> 03:32.500
304
+ Y podemos ver que se empieza a imprimir
305
+ primero
306
+
307
+ 03:32.500 --> 03:34.700
308
+ el uno de la funci贸n de
309
+ var,
310
+
311
+ 03:34.700 --> 03:37.400
312
+ despu茅s la funci贸n de var manda a llamar
313
+ la funci贸n de foo,
314
+
315
+ 03:37.400 --> 03:41.100
316
+ que lo manda directamente de forma
317
+ as铆ncrona a WebAPI.
318
+
319
+ 03:41.100 --> 03:42.900
320
+ Mientras eso se
321
+ resuelve,
322
+
323
+ 03:42.900 --> 03:44.900
324
+ se manda a llamar la funci贸n de baz.
325
+
326
+ 03:44.900 --> 03:47.300
327
+ La funci贸n de baz ejecuta el
328
+ tres
329
+
330
+ 03:47.300 --> 03:49.100
331
+ y una vez que est谩 vac铆o el call stack,
332
+
333
+ 03:49.100 --> 03:51.800
334
+ llega el resultado de la funci贸n de foo,
335
+
336
+ 03:51.800 --> 03:54.500
337
+ se sube al call stack y se imprime dos.
338
+
339
+ 03:54.500 --> 03:56.700
340
+ Entonces el n煤mero de impresiones
341
+ tendr铆amos
342
+
343
+ 03:56.700 --> 03:58.700
344
+ uno, tres y
345
+ dos,
346
+
347
+ 03:58.700 --> 04:00.200
348
+ porque en forma
349
+ simult谩nea,
350
+
351
+ 04:00.200 --> 04:03.600
352
+ el uno y el dos estuvieron trabajando en
353
+ paralelo,
354
+
355
+ 04:03.600 --> 04:06.000
356
+ pero solo hasta que el tres logra salir,
357
+
358
+ 04:06.000 --> 04:08.500
359
+ el dos llega directamente al call
360
+ stack
361
+
362
+ 04:08.500 --> 04:10.100
363
+ y se lo va a
364
+ imprimir.
365
+
366
+ 04:10.100 --> 04:12.000
367
+ Esta es la forma en la cual nosotros
368
+ trabajamos
369
+
370
+ 04:12.000 --> 04:14.100
371
+ c贸digo en JavaScript de forma
372
+ s铆ncrona
373
+
374
+ 04:14.100 --> 04:16.000
375
+ y de forma
376
+ as铆ncrona,
377
+
378
+ 04:16.000 --> 04:18.100
379
+ utilizando por ejemplo
380
+ WebAPIs,
381
+
382
+ 04:18.100 --> 04:21.300
383
+ que hace que nuestro c贸digo pueda
384
+ comportarse
385
+
386
+ 04:21.300 --> 04:23.500
387
+ como c贸digo
388
+ as铆ncrono.
389
+
390
+ 04:23.500 --> 04:26.800
391
+ Y para esto vamos a utilizar lo que se
392
+ llaman promesas.
393
+
394
+ 04:26.800 --> 04:29.800
395
+ Promesas, que tambi茅n pueden ser sync and
396
+ await,
397
+
398
+ 04:29.800 --> 04:31.600
399
+ que van a hacer que nuestro
400
+ c贸digo
401
+
402
+ 04:31.600 --> 04:34.900
403
+ pueda tener este comportamiento de
404
+ as铆ncrono
405
+
406
+ 04:34.900 --> 04:48.900
407
+ para que se ejecute en
408
+ paralelo.
409
+
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Promesas en JavaScript Asincron铆a y Manejo de Estados.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:45ac4de97c6af7b178c48a98987e8f69f4710b0139eea8db58704e479f0ba434
3
+ size 59530331
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Promesas en JavaScript Asincron铆a y Manejo de Estados.vtt ADDED
@@ -0,0 +1,894 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:03.800
4
+ Entendamos entonces qu茅 son las promesas.
5
+
6
+ 00:03.800 --> 00:06.920
7
+ Aqu铆 tenemos un HTML muy
8
+ sencillo,
9
+
10
+ 00:06.920 --> 00:08.840
11
+ ya lo tenemos abierto en el navegador.
12
+
13
+ 00:08.840 --> 00:11.080
14
+ Vamos a pasar al
15
+ JavaScript.
16
+
17
+ 00:11.080 --> 00:14.640
18
+ Entonces, las promesas es lo que nos va a
19
+ ayudar a hacer
20
+
21
+ 00:14.640 --> 00:17.800
22
+ que nuestro c贸digo pase de ser
23
+ s铆ncrono
24
+
25
+ 00:17.800 --> 00:20.360
26
+ a que pueda ser un c贸digo as铆ncrono.
27
+
28
+ 00:20.360 --> 00:22.960
29
+ Es la forma en la cual nosotros vamos a
30
+ decir al navegador,
31
+
32
+ 00:22.960 --> 00:25.280
33
+ oye, esta funci贸n en
34
+ particular,
35
+
36
+ 00:25.280 --> 00:27.320
37
+ tienes que trabajarla de forma
38
+ separada
39
+
40
+ 00:27.320 --> 00:30.080
41
+ y ya que est茅 resuelta, me la puede
42
+ regresar
43
+
44
+ 00:30.080 --> 00:32.280
45
+ para que yo la pueda agregar al call
46
+ stack
47
+
48
+ 00:32.280 --> 00:34.040
49
+ y me pueda dar un
50
+ resultado.
51
+
52
+ 00:34.040 --> 00:36.600
53
+ Y podemos tener ciertos ejemplos
54
+ ahorita
55
+
56
+ 00:36.600 --> 00:39.880
57
+ para poder entender c贸mo se van disparando
58
+ ciertas funciones.
59
+
60
+ 00:39.880 --> 00:42.120
61
+ Tendr铆amos dos funciones que se van a
62
+ disparar
63
+
64
+ 00:42.120 --> 00:45.480
65
+ de forma s铆ncrona y en medio de estas dos
66
+ funciones
67
+
68
+ 00:45.480 --> 00:49.080
69
+ podemos generar una promesa que al momento
70
+ de que se dispare,
71
+
72
+ 00:49.080 --> 00:50.840
73
+ nosotros esperar铆amos tener, por ejemplo,
74
+
75
+ 00:50.840 --> 00:53.400
76
+ el resultado de cada una de las funciones,
77
+
78
+ 00:53.400 --> 00:55.320
79
+ pero la promesa va a venir
80
+ despu茅s
81
+
82
+ 00:55.320 --> 00:58.920
83
+ porque va a ser lo 煤ltimo que se va a
84
+ solucionar.
85
+
86
+ 00:58.920 --> 01:00.960
87
+ Entonces, 驴qu茅 son las
88
+ promesas?
89
+
90
+ 01:00.960 --> 01:03.680
91
+ Como te comentaba, las promesas es la
92
+ forma
93
+
94
+ 01:03.680 --> 01:06.840
95
+ en la cual nosotros vamos a generar que
96
+ nuestro c贸digo
97
+
98
+ 01:06.840 --> 01:09.840
99
+ pueda funcionar de forma
100
+ as铆ncrona.
101
+
102
+ 01:09.840 --> 01:12.880
103
+ Y las promesas tienen tres
104
+ estados.
105
+
106
+ 01:12.880 --> 01:17.320
107
+ El primer estado es pending, que es el
108
+ estado de pendiente.
109
+
110
+ 01:18.560 --> 01:22.120
111
+ Este estado es cuando la promesa se va a
112
+ crear.
113
+
114
+ 01:22.120 --> 01:24.160
115
+ Cuando nosotros creamos una promesa,
116
+
117
+ 01:24.160 --> 01:27.920
118
+ que las promesas las vamos a trabajar de
119
+ inicio,
120
+
121
+ 01:27.920 --> 01:31.840
122
+ de esta forma, se va a generar un primer
123
+ estado
124
+
125
+ 01:31.840 --> 01:36.040
126
+ que es el estado de
127
+ pending.
128
+
129
+ 01:38.760 --> 01:42.280
130
+ Ese estado de pending est谩 en
131
+ pendiente
132
+
133
+ 01:42.280 --> 01:44.920
134
+ porque se va a empezar a generar la promesa.
135
+
136
+ 01:44.920 --> 01:47.840
137
+ El segundo estado es
138
+ fulfill.
139
+
140
+ 01:47.840 --> 01:52.840
141
+ Y este estado va a venir cuando la promesa
142
+ se resuelva.
143
+
144
+ 01:54.320 --> 01:57.360
145
+ Una vez que la promesa se resuelva para
146
+ bien o para mal,
147
+
148
+ 01:57.360 --> 01:59.280
149
+ se va a poner en
150
+ fulfill.
151
+
152
+ 01:59.280 --> 02:03.280
153
+ Y el tercer estado es
154
+ reject,
155
+
156
+ 02:04.720 --> 02:07.000
157
+ que es cuando la promesa no se resolvi贸.
158
+
159
+ 02:07.840 --> 02:10.320
160
+ Por alg煤n punto, la promesa no se
161
+ resolvi贸
162
+
163
+ 02:10.320 --> 02:12.680
164
+ y ese es el estado que nos va a regresar.
165
+
166
+ 02:12.680 --> 02:16.440
167
+ Ahora, las promesas manejan dos tipos de
168
+ callback.
169
+
170
+ 02:16.440 --> 02:18.640
171
+ La primera es
172
+ resolve,
173
+
174
+ 02:20.360 --> 02:25.000
175
+ que evidentemente es cuando la promesa se
176
+ resuelve
177
+
178
+ 02:25.000 --> 02:27.160
179
+ de forma
180
+ satisfactoria.
181
+
182
+ 02:27.160 --> 02:29.840
183
+ Y la segunda es
184
+ reject,
185
+
186
+ 02:29.840 --> 02:33.800
187
+ que es cuando la promesa no se puede resolver.
188
+
189
+ 02:33.800 --> 02:35.240
190
+ Es importante poder
191
+ entender
192
+
193
+ 02:35.240 --> 02:37.720
194
+ lo que son los estados de la promesa,
195
+
196
+ 02:39.920 --> 02:40.840
197
+ que son
198
+ estos.
199
+
200
+ 02:41.800 --> 02:45.080
201
+ Y de igual forma, es importante poder
202
+ entender
203
+
204
+ 02:45.080 --> 02:50.080
205
+ cu谩les son los callbacks que tienen las
206
+ promesas.
207
+
208
+ 02:52.000 --> 02:55.440
209
+ Tambi茅n vamos a poder tener dos m茅todos en
210
+ las promesas
211
+
212
+ 02:55.440 --> 02:56.480
213
+ que son
214
+ importantes.
215
+
216
+ 02:56.480 --> 02:59.840
217
+ Nosotros generamos una primer funci贸n como
218
+ una promesa,
219
+
220
+ 02:59.840 --> 03:04.520
221
+ pero podemos utilizar el then, que es un
222
+ m茅todo.
223
+
224
+ 03:04.520 --> 03:08.000
225
+ Este m茅todo se ejecuta cuando la promesa
226
+ se resuelve.
227
+
228
+ 03:08.000 --> 03:12.320
229
+ Una vez que la promesa est谩 lista, ya est谩
230
+ fulfill,
231
+
232
+ 03:12.320 --> 03:15.120
233
+ y est谩 como con un callback de se resuelve,
234
+
235
+ 03:15.120 --> 03:18.360
236
+ entonces va a entrar a ejecutarse el then.
237
+
238
+ 03:18.360 --> 03:21.840
239
+ Y tenemos otro m茅todo que se llama catch.
240
+
241
+ 03:21.840 --> 03:26.360
242
+ Este es importante porque el catch es lo
243
+ que va a suceder
244
+
245
+ 03:26.360 --> 03:28.480
246
+ cuando la promesa no se
247
+ resuelve,
248
+
249
+ 03:28.480 --> 03:33.000
250
+ y en el catch vamos a poder nosotros
251
+ obtener el error
252
+
253
+ 03:33.000 --> 03:35.560
254
+ para poder imprimirlo y que nos pueda
255
+ decir
256
+
257
+ 03:35.560 --> 03:36.920
258
+ qu茅 es lo que est谩
259
+ pasando
260
+
261
+ 03:36.920 --> 03:39.520
262
+ que hace que la promesa no se resuelva.
263
+
264
+ 03:39.520 --> 03:41.480
265
+ Comencemos con el
266
+ ejemplo.
267
+
268
+ 03:41.480 --> 03:46.160
269
+ Empezamos con una constante, se va a
270
+ llamar promesa,
271
+
272
+ 03:46.160 --> 03:51.160
273
+ y aqu铆 vamos a construir una instancia de
274
+ promesa.
275
+
276
+ 03:54.880 --> 03:59.760
277
+ Esta instancia va a tener dos
278
+ par谩metros
279
+
280
+ 03:59.760 --> 04:03.520
281
+ que va a ser resolve y
282
+ reject.
283
+
284
+ 04:04.960 --> 04:06.840
285
+ Ya que lo tenemos
286
+ ah铆,
287
+
288
+ 04:06.840 --> 04:11.840
289
+ terminamos con la sintaxis de nuestra promesa,
290
+
291
+ 04:12.960 --> 04:16.640
292
+ y aqu铆 vamos a mandar llamar un
293
+ setTimeout
294
+
295
+ 04:16.640 --> 04:19.160
296
+ para generar como una
297
+ validaci贸n.
298
+
299
+ 04:19.160 --> 04:21.120
300
+ Vamos a, por
301
+ ejemplo,
302
+
303
+ 04:21.120 --> 04:25.240
304
+ tener como si estuvi茅ramos haciendo a lo
305
+ mejor
306
+
307
+ 04:26.880 --> 04:28.280
308
+ el llamado de un
309
+ API,
310
+
311
+ 04:28.280 --> 04:29.760
312
+ y estamos esperando que se
313
+ resuelva
314
+
315
+ 04:29.760 --> 04:31.280
316
+ y que nos regrese
317
+ algo.
318
+
319
+ 04:31.280 --> 04:34.200
320
+ Entonces, para que esto pueda funcionar,
321
+
322
+ 04:34.200 --> 04:37.880
323
+ el setTimeout nos va a ayudar para darle
324
+ un tiempo
325
+
326
+ 04:37.880 --> 04:40.840
327
+ a que este llamado del API se pueda resolver,
328
+
329
+ 04:40.840 --> 04:43.760
330
+ y una vez que est茅 resuelto, nos regrese
331
+ el resultado.
332
+
333
+ 04:43.760 --> 04:45.040
334
+ Aqu铆 lo vamos a
335
+ fakear,
336
+
337
+ 04:46.320 --> 04:47.600
338
+ lo vamos a llamar un
339
+ API,
340
+
341
+ 04:47.600 --> 04:50.040
342
+ vamos a generar una
343
+ variable
344
+
345
+ 04:50.040 --> 04:54.560
346
+ que nos fakee el resultado de la respuesta,
347
+ 驴no?
348
+
349
+ 04:54.560 --> 04:56.640
350
+ Entonces tenemos nuestro setTimeout.
351
+
352
+ 04:58.320 --> 04:59.400
353
+ Ya estando
354
+ ac谩,
355
+
356
+ 04:59.400 --> 05:01.720
357
+ aqu铆 es donde pondr铆amos nosotros como el
358
+ c贸digo
359
+
360
+ 05:01.720 --> 05:04.240
361
+ si estuvi茅ramos haciendo la petici贸n de un
362
+ API,
363
+
364
+ 05:04.240 --> 05:06.280
365
+ vamos a utilizar un fetch o algo similar,
366
+
367
+ 05:06.280 --> 05:09.720
368
+ yo voy a generar una variable que se llama
369
+ operation
370
+
371
+ 05:12.040 --> 05:12.880
372
+ successFull,
373
+
374
+ 05:15.200 --> 05:17.240
375
+ y va a ser igual a
376
+ true,
377
+
378
+ 05:17.240 --> 05:19.320
379
+ dando como
380
+ referencia
381
+
382
+ 05:19.320 --> 05:24.320
383
+ de que lo que pas贸 aqu铆 en el c贸digo del
384
+ setTimeout
385
+
386
+ 05:24.480 --> 05:26.080
387
+ regres贸 a 茅xito,
388
+ 驴no?
389
+
390
+ 05:26.080 --> 05:28.040
391
+ Entonces podemos
392
+ continuar.
393
+
394
+ 05:28.040 --> 05:29.040
395
+ Y en la parte de
396
+ abajo,
397
+
398
+ 05:29.040 --> 05:31.440
399
+ voy a hacer una peque帽a
400
+ validaci贸n.
401
+
402
+ 05:31.440 --> 05:33.240
403
+ Si
404
+ operation
405
+
406
+ 05:34.520 --> 05:35.360
407
+ successFull,
408
+
409
+ 05:38.200 --> 05:39.080
410
+ si
411
+ operaci贸n,
412
+
413
+ 05:39.080 --> 05:42.720
414
+ si esta operaci贸n fue
415
+ exitosa,
416
+
417
+ 05:42.720 --> 05:43.680
418
+ entonces
419
+
420
+ 05:44.800 --> 05:47.120
421
+ regr茅same el
422
+ result.
423
+
424
+ 05:48.280 --> 05:50.080
425
+ 驴Quiere aqu铆 en el
426
+ result?
427
+
428
+ 05:50.080 --> 05:51.480
429
+ Podemos poner
430
+ como
431
+
432
+ 05:53.680 --> 05:54.600
433
+ la
434
+ operaci贸n
435
+
436
+ 05:54.600 --> 05:59.600
437
+ fue
438
+ exitosa.
439
+
440
+ 06:02.000 --> 06:04.280
441
+ Y en caso de que no sea
442
+ exitosa,
443
+
444
+ 06:05.880 --> 06:07.920
445
+ me va a regresar el
446
+ reject.
447
+
448
+ 06:16.560 --> 06:17.560
449
+ Ah铆 va la
450
+ operaci贸n.
451
+
452
+ 06:17.560 --> 06:22.560
453
+ Aqu铆 ponemos
454
+ acentos.
455
+
456
+ 06:25.960 --> 06:29.000
457
+ Y este if, esta
458
+ validaci贸n,
459
+
460
+ 06:29.000 --> 06:33.240
461
+ tiene que ir adentro de nuestro setTimeout.
462
+
463
+ 06:33.240 --> 06:34.800
464
+ Y ya que estamos con
465
+ esto,
466
+
467
+ 06:34.800 --> 06:37.360
468
+ entonces le decimos que queremos que se
469
+ resuelva
470
+
471
+ 06:37.360 --> 06:39.160
472
+ en dos
473
+ segundos.
474
+
475
+ 06:40.680 --> 06:43.640
476
+ Entonces es el tiempo que le vamos a dar
477
+ al setTimeout
478
+
479
+ 06:43.640 --> 06:45.600
480
+ para que pueda resolver esta operaci贸n.
481
+
482
+ 06:45.600 --> 06:48.640
483
+ Aqu铆, como nosotros le estamos
484
+ poniendo
485
+
486
+ 06:48.640 --> 06:50.800
487
+ que la operaci贸n s铆 fue
488
+ exitosa,
489
+
490
+ 06:50.800 --> 06:53.480
491
+ esto va a pasar y nos tendr谩 que
492
+ resolver
493
+
494
+ 06:53.480 --> 06:56.280
495
+ con, oye, la operaci贸n fue
496
+ exitosa.
497
+
498
+ 06:56.280 --> 06:58.280
499
+ En caso de que esto no
500
+ pasara,
501
+
502
+ 06:58.280 --> 07:00.440
503
+ digamos, alguna petici贸n o un
504
+ API,
505
+
506
+ 07:00.440 --> 07:03.000
507
+ de repente nos regresara como un false,
508
+
509
+ 07:03.000 --> 07:06.160
510
+ entonces aqu铆 entrar铆a el
511
+ else
512
+
513
+ 07:06.160 --> 07:07.560
514
+ y nos regresar铆a el
515
+ reject.
516
+
517
+ 07:08.560 --> 07:10.440
518
+ Entonces ahorita vamos a
519
+ guardar.
520
+
521
+ 07:12.280 --> 07:13.680
522
+ Si venimos aqu铆 a
523
+ navegador,
524
+
525
+ 07:13.680 --> 07:16.480
526
+ y mandamos llamar nuestra
527
+ funci贸n,
528
+
529
+ 07:16.480 --> 07:17.320
530
+ le damos
531
+ enter,
532
+
533
+ 07:18.600 --> 07:21.160
534
+ vemos aqu铆 que nos est谩 regresando algo.
535
+
536
+ 07:21.160 --> 07:23.320
537
+ Nos est谩 regresando una
538
+ promesa,
539
+
540
+ 07:23.320 --> 07:26.120
541
+ nos est谩 diciendo que la promesa ya fue
542
+ resuelta,
543
+
544
+ 07:26.120 --> 07:28.000
545
+ fulfill, ya est谩
546
+ lista,
547
+
548
+ 07:28.000 --> 07:30.640
549
+ y nos est谩 regresando entonces el resultado.
550
+
551
+ 07:30.640 --> 07:33.520
552
+ Quiere decir que la operaci贸n fue exitosa.
553
+
554
+ 07:33.520 --> 07:34.360
555
+ 驴Por
556
+ qu茅?
557
+
558
+ 07:34.360 --> 07:38.240
559
+ Porque aqu铆 le estamos diciendo que lo
560
+ esperado es verdad.
561
+
562
+ 07:38.240 --> 07:39.640
563
+ Ahora, si cambiamos
564
+ esto,
565
+
566
+ 07:39.640 --> 07:40.840
567
+ y
568
+ guardamos,
569
+
570
+ 07:40.840 --> 07:42.240
571
+ vamos a ver que nos
572
+ regresa.
573
+
574
+ 07:46.120 --> 07:47.440
575
+ Nos regresa lo
576
+ mismo,
577
+
578
+ 07:47.440 --> 07:50.880
579
+ por aqu铆 nos dice que nos est谩 regresando
580
+ el reject,
581
+
582
+ 07:50.880 --> 07:54.400
583
+ y nos est谩 regresando el mensaje de esto
584
+ fall贸,
585
+
586
+ 07:54.400 --> 07:57.240
587
+ y entonces es la operaci贸n
588
+ fall贸.
589
+
590
+ 07:57.240 --> 07:58.960
591
+ Este es un ejemplo
592
+ b谩sico.
593
+
594
+ 07:58.960 --> 08:01.440
595
+ Ahora, 驴c贸mo nosotros podr铆amos
596
+ obtener?
597
+
598
+ 08:01.440 --> 08:04.040
599
+ Aqu铆 nosotros tenemos que venir a la
600
+ terminal
601
+
602
+ 08:04.040 --> 08:06.480
603
+ a poder poner la
604
+ operaci贸n,
605
+
606
+ 08:06.480 --> 08:11.400
607
+ venir a la terminal a poder poner la
608
+ funci贸n
609
+
610
+ 08:11.400 --> 08:13.640
611
+ para poder ver en la terminal que es lo
612
+ que est谩 pasando,
613
+
614
+ 08:13.640 --> 08:16.600
615
+ pero 驴c贸mo nos puede regresar
616
+ autom谩ticamente
617
+
618
+ 08:16.600 --> 08:19.200
619
+ esta funci贸n, el
620
+ resultado?
621
+
622
+ 08:19.200 --> 08:20.800
623
+ Nos regresamos a nuestro
624
+ c贸digo,
625
+
626
+ 08:21.640 --> 08:23.440
627
+ utilizamos nuestra
628
+ funci贸n,
629
+
630
+ 08:24.600 --> 08:26.760
631
+ y aqu铆 es donde vamos a estar
632
+ utilizando
633
+
634
+ 08:26.760 --> 08:30.400
635
+ los m茅todos que tienen las promesas.
636
+
637
+ 08:31.440 --> 08:33.200
638
+ Podemos venir
639
+ aqu铆,
640
+
641
+ 08:33.200 --> 08:36.840
642
+ y utilizamos punto y el m茅todo
643
+ uno.
644
+
645
+ 08:36.840 --> 08:38.680
646
+ Entonces el m茅todo
647
+ den,
648
+
649
+ 08:38.680 --> 08:42.560
650
+ lo que hace es se ejecuta cuando la
651
+ promesa se resuelve.
652
+
653
+ 08:42.560 --> 08:45.640
654
+ Entonces lo que va a hacer es que va a
655
+ ejecutar,
656
+
657
+ 08:45.640 --> 08:47.880
658
+ una vez que la promesa se
659
+ resuelve,
660
+
661
+ 08:47.880 --> 08:50.800
662
+ lo que nosotros queremos traer es lo que
663
+ sea
664
+
665
+ 08:50.800 --> 08:53.720
666
+ que va a estar viniendo aqu铆 en este c贸digo.
667
+
668
+ 08:53.720 --> 08:56.000
669
+ Entonces aqu铆 le estamos diciendo como den,
670
+
671
+ 08:57.240 --> 09:01.080
672
+ y lo que queremos que nos traiga es un
673
+ mensaje
674
+
675
+ 09:01.080 --> 09:04.360
676
+ que el mensaje tiene que ser como el
677
+ mensaje de 茅xito
678
+
679
+ 09:04.360 --> 09:06.560
680
+ en este momento, entonces podemos ponerle,
681
+
682
+ 09:07.560 --> 09:10.520
683
+ success
684
+ message,
685
+
686
+ 09:14.160 --> 09:17.160
687
+ y el c贸digo aqu铆 va a ser nada m谩s un console.
688
+ log.
689
+
690
+ 09:21.160 --> 09:22.880
691
+ Y en el
692
+ console.log,
693
+
694
+ 09:22.880 --> 09:27.880
695
+ queremos que nos imprima el mensaje de 茅xito,
696
+
697
+ 09:27.920 --> 09:29.880
698
+ que tendr铆a que ser este
699
+ mensaje.
700
+
701
+ 09:29.880 --> 09:32.840
702
+ Ahora, si esto no se resuelve a favor,
703
+
704
+ 09:32.840 --> 09:34.840
705
+ estamos esperando entonces un catch.
706
+
707
+ 09:36.080 --> 09:37.840
708
+ 驴Qu茅 es lo que
709
+ pas贸?
710
+
711
+ 09:37.840 --> 09:40.800
712
+ Nos interesa de perfecto, si esto no fue
713
+ un 茅xito,
714
+
715
+ 09:40.800 --> 09:43.240
716
+ si no me est谩 regresando el c贸digo que yo
717
+ esperaba,
718
+
719
+ 09:43.240 --> 09:45.520
720
+ entonces regresame el
721
+ error.
722
+
723
+ 09:51.360 --> 09:53.640
724
+ Y con el error hacemos lo
725
+ mismo.
726
+
727
+ 09:53.640 --> 09:55.120
728
+ 驴Cu谩l es el
729
+ c贸digo?
730
+
731
+ 09:55.120 --> 09:57.840
732
+ O qu茅 es lo que estamos esperando que se
733
+ ejecute,
734
+
735
+ 09:57.840 --> 09:59.920
736
+ si existe un
737
+ error.
738
+
739
+ 10:01.600 --> 10:03.400
740
+ Y en este caso, solo para el ejemplo,
741
+
742
+ 10:03.400 --> 10:05.640
743
+ lo que yo estoy esperando que se
744
+ ejecute
745
+
746
+ 10:05.640 --> 10:07.920
747
+ es pr谩cticamente el mensaje de
748
+ error
749
+
750
+ 10:07.920 --> 10:10.160
751
+ que yo ten铆a
752
+ planificado.
753
+
754
+ 10:10.160 --> 10:11.120
755
+ Entonces
756
+ guardamos.
757
+
758
+ 10:13.160 --> 10:16.560
759
+ Se tom贸 un tiempo y aqu铆 nos dice que
760
+ tenemos un error
761
+
762
+ 10:16.560 --> 10:18.840
763
+ en la l铆nea 17 y est谩
764
+ ac谩.
765
+
766
+ 10:21.440 --> 10:23.240
767
+ Entonces si ahora volvemos a guardar,
768
+
769
+ 10:24.440 --> 10:27.320
770
+ bien, aqu铆 est谩 otro
771
+ typo.
772
+
773
+ 10:27.320 --> 10:28.400
774
+ Perfecto.
775
+
776
+ 10:28.400 --> 10:30.480
777
+ Entonces al momento de que yo estoy guardando,
778
+
779
+ 10:30.480 --> 10:31.720
780
+ se est谩
781
+ demorando,
782
+
783
+ 10:31.720 --> 10:33.320
784
+ pero est谩 demorando los dos
785
+ segundos
786
+
787
+ 10:33.320 --> 10:34.640
788
+ que le estoy poniendo
789
+ aqu铆.
790
+
791
+ 10:34.640 --> 10:36.200
792
+ Entonces si yo vuelvo a
793
+ cargar,
794
+
795
+ 10:37.560 --> 10:40.320
796
+ dos segundos y ahora,
797
+ perfecto,
798
+
799
+ 10:40.320 --> 10:42.280
800
+ ya nos dice la operaci贸n
801
+ fall贸.
802
+
803
+ 10:42.280 --> 10:43.680
804
+ 驴Por qu茅 est谩
805
+ fallando?
806
+
807
+ 10:43.680 --> 10:45.560
808
+ Porque aqu铆 en la
809
+ promesa,
810
+
811
+ 10:45.560 --> 10:48.760
812
+ yo le estoy poniendo que sea diferente a true.
813
+
814
+ 10:48.760 --> 10:52.440
815
+ Si quitamos ese, que sea diferente a
816
+ true
817
+
818
+ 10:52.440 --> 10:53.640
819
+ y le damos
820
+ guardar,
821
+
822
+ 10:54.560 --> 10:56.440
823
+ se tarda dos
824
+ segundos
825
+
826
+ 10:56.440 --> 10:57.480
827
+ y entonces ya nos
828
+ regresa,
829
+
830
+ 10:57.480 --> 10:59.720
831
+ oye, la operaci贸n fue
832
+ exitosa.
833
+
834
+ 10:59.720 --> 11:02.000
835
+ Entonces el then y el
836
+ catch
837
+
838
+ 11:02.000 --> 11:03.640
839
+ es lo que nosotros vamos a
840
+ utilizar
841
+
842
+ 11:03.640 --> 11:05.920
843
+ para poder ejecutar el
844
+ resultado
845
+
846
+ 11:05.920 --> 11:07.360
847
+ que venga de nuestra
848
+ promesa,
849
+
850
+ 11:07.360 --> 11:09.960
851
+ que en este caso, nuestra promesa tiene un
852
+ setTimeout,
853
+
854
+ 11:09.960 --> 11:12.440
855
+ que tambi茅n es pr谩cticamente una promesa.
856
+
857
+ 11:13.400 --> 11:15.560
858
+ Y una vez que eso se termina de ejecutar,
859
+
860
+ 11:15.560 --> 11:18.640
861
+ mandamos llamar nuestra promesa con el
862
+ then
863
+
864
+ 11:18.640 --> 11:20.160
865
+ para que se ejecute el
866
+ c贸digo
867
+
868
+ 11:20.160 --> 11:22.280
869
+ que esperamos una vez que la
870
+ promesa
871
+
872
+ 11:22.280 --> 11:26.080
873
+ pues se haya resuelto de forma exitosa.
874
+
875
+ 11:26.080 --> 11:28.280
876
+ Y en caso de que eso no
877
+ funcione,
878
+
879
+ 11:28.280 --> 11:30.440
880
+ entonces que nos regrese el
881
+ catch
882
+
883
+ 11:30.440 --> 11:32.760
884
+ para que nosotros podamos saber
885
+ principalmente
886
+
887
+ 11:32.760 --> 11:33.720
888
+ cu谩l fue el
889
+ error
890
+
891
+ 11:33.720 --> 11:58.720
892
+ y por qu茅 no se resolvi贸 la promesa como
893
+ lo esper谩bamos.
894
+
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-app_3fd37998-3a9c-486d-8eeb-3794a9ea8bd3.js ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ fetch("https://jsonplaceholder.typicode.com/posts")
2
+ .then((response) => response.json())
3
+ .then((data) => console.log(data));
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Lecturas recomendadas.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ https://github.com/platzi/basico-js
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Resumen.html ADDED
The diff for this file is too large to render. See raw diff
 
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Uso de AsyncAwait para Promesas As铆ncronas en JavaScript.mp4 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:5d1fbc8fbceb5e18fc9e8460d795fb99c8ddc7016962d2048d83a2a1dd55f553
3
+ size 52676906
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Uso de AsyncAwait para Promesas As铆ncronas en JavaScript.vtt ADDED
@@ -0,0 +1,674 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ WEBVTT
2
+
3
+ 00:00.000 --> 00:04.200
4
+ Hay que otra forma de poder trabajar
5
+ promesas as铆ncronas,
6
+
7
+ 00:04.200 --> 00:06.360
8
+ que ser铆a
9
+ SYNC-N-AWAIT.
10
+
11
+ 00:06.360 --> 00:09.400
12
+ Aqu铆 tenemos ya nuestro proyecto, un HTML
13
+ en blanco,
14
+
15
+ 00:09.400 --> 00:13.800
16
+ lo que queremos es utilizar el JavaScript
17
+ para poder ver aqu铆 en consola el resultado.
18
+
19
+ 00:13.800 --> 00:20.900
20
+ Pero vamos a estar hablando de algo que se
21
+ llama SYNC-N-AWAIT.
22
+
23
+ 00:20.900 --> 00:25.320
24
+ Que esto es otra forma de poder trabajar
25
+ c贸digo de forma as铆ncrono.
26
+
27
+ 00:25.320 --> 00:28.640
28
+ El SYNC-N-AWAIT devuelve una promesa,
29
+
30
+ 00:28.640 --> 00:33.240
31
+ entonces el resultado es lo mismo, el
32
+ c贸digo que est茅 en el SYNC-N-AWAIT
33
+
34
+ 00:33.240 --> 00:35.720
35
+ se va a pasar a la secci贸n de Web API,
36
+
37
+ 00:35.720 --> 00:40.960
38
+ en esa secci贸n va a trabajar para poder
39
+ resolver
40
+
41
+ 00:40.960 --> 00:43.160
42
+ lo que es esa funci贸n como una promesa,
43
+
44
+ 00:43.160 --> 00:46.720
45
+ y ya que est茅 resuelta, no las va a poder
46
+ regresar con el EVENLOOP
47
+
48
+ 00:46.720 --> 00:49.040
49
+ directamente al call
50
+ stack,
51
+
52
+ 00:49.040 --> 00:52.840
53
+ para que se pueda ejecutar la respuesta de
54
+ esa promesa, ese callback.
55
+
56
+ 00:52.840 --> 00:57.360
57
+ Las promesas existieron despu茅s de los
58
+ callbacks,
59
+
60
+ 00:57.360 --> 00:59.600
61
+ as铆 que ese es el beneficio que tenemos,
62
+
63
+ 00:59.600 --> 01:03.040
64
+ que nos ayuda a que esto genera que
65
+ nuestro c贸digo
66
+
67
+ 01:03.040 --> 01:06.440
68
+ pase de ser c贸digo s铆ncrono en nuestro
69
+ call stack,
70
+
71
+ 01:06.440 --> 01:08.240
72
+ a c贸digo
73
+ as铆ncrono,
74
+
75
+ 01:08.240 --> 01:11.840
76
+ y se puedan ir resolviendo diferentes
77
+ tareas de forma s铆ncrona.
78
+
79
+ 01:11.840 --> 01:15.840
80
+ Ahora, el SYNC-N-AWAIT, la diferencia que
81
+ tiene con las promesas
82
+
83
+ 01:15.840 --> 01:19.080
84
+ es que es una forma un poco m谩s
85
+ legible
86
+
87
+ 01:19.080 --> 01:22.040
88
+ de poder leer los pasos, qu茅 es lo que
89
+ est谩 pasando.
90
+
91
+ 01:22.040 --> 01:25.200
92
+ Lo que vamos a hacer ahorita, que es un
93
+ peque帽o ejercicio,
94
+
95
+ 01:25.200 --> 01:28.640
96
+ vamos a consumir una API, una API p煤blica,
97
+
98
+ 01:28.640 --> 01:30.880
99
+ para poder utilizar el
100
+ FETCH.
101
+
102
+ 01:30.880 --> 01:33.160
103
+ Ese FETCH lo que nos va a ayudar es,
104
+
105
+ 01:33.160 --> 01:35.080
106
+ FETCH en particular es otra web
107
+ API
108
+
109
+ 01:35.080 --> 01:36.880
110
+ que tambi茅n nos regresa una promesa,
111
+
112
+ 01:36.880 --> 01:39.680
113
+ trabaja por su cuenta, y una vez que est茅
114
+ resultado,
115
+
116
+ 01:39.680 --> 01:41.360
117
+ simplemente lo regresa al call
118
+ stack
119
+
120
+ 01:41.360 --> 01:44.280
121
+ para que nosotros podamos tener el
122
+ resultado
123
+
124
+ 01:44.280 --> 01:46.200
125
+ de si la promesa se cumpli贸 o
126
+ no.
127
+
128
+ 01:46.200 --> 01:48.400
129
+ Y vamos a hacer el mismo
130
+ ejercicio,
131
+
132
+ 01:48.400 --> 01:50.880
133
+ pero utilizando
134
+ SYNC-N-AWAIT.
135
+
136
+ 01:50.880 --> 01:54.680
137
+ Entonces aqu铆 vamos a conseguir una
138
+ peque帽a funci贸n
139
+
140
+ 01:54.680 --> 01:59.680
141
+ que se va a llamar
142
+ FETCHDATA.
143
+
144
+ 02:03.320 --> 02:05.600
145
+ Esta funci贸n no va a recibir ning煤n par谩metro,
146
+
147
+ 02:05.600 --> 02:09.440
148
+ entonces adentro de esta funci贸n
149
+ utilizamos el web API
150
+
151
+ 02:09.440 --> 02:12.040
152
+ que se llama
153
+ FETCH.
154
+
155
+ 02:12.040 --> 02:14.440
156
+ Y aqu铆 vamos directamente al
157
+ FETCH,
158
+
159
+ 02:14.440 --> 02:16.880
160
+ tenemos que poner la URL del
161
+ API
162
+
163
+ 02:16.880 --> 02:20.320
164
+ a la que estamos intentando hacer como la
165
+ petici贸n.
166
+
167
+ 02:20.320 --> 02:22.240
168
+ Yo tengo aqu铆 algunas APIs abiertas,
169
+
170
+ 02:22.240 --> 02:24.280
171
+ existen diferentes APIs
172
+ p煤blicas,
173
+
174
+ 02:24.280 --> 02:26.680
175
+ t煤 puedes utilizar el API que t煤 quieras,
176
+
177
+ 02:26.680 --> 02:27.960
178
+ te las pongo aqu铆 de
179
+ referencia
180
+
181
+ 02:27.960 --> 02:29.920
182
+ para que t煤 puedas ver la documentaci贸n,
183
+
184
+ 02:29.920 --> 02:32.480
185
+ est谩 una de Pok茅mon, est谩 una de Star Wars,
186
+
187
+ 02:32.480 --> 02:35.760
188
+ o la que yo voy a utilizar es la de Rick
189
+ and Morty.
190
+
191
+ 02:35.760 --> 02:38.920
192
+ Entonces voy a utilizar
193
+ particularmente
194
+
195
+ 02:38.920 --> 02:40.880
196
+ esta parte del
197
+ API
198
+
199
+ 02:40.880 --> 02:44.080
200
+ que me regresa a los personajes de Rick
201
+ and Morty.
202
+
203
+ 02:44.080 --> 02:49.080
204
+ Entonces venimos aqu铆, colocamos aqu铆
205
+ nuestra API,
206
+
207
+ 02:49.320 --> 02:50.480
208
+ y ya que
209
+ est谩,
210
+
211
+ 02:50.480 --> 02:53.080
212
+ venimos y ponemos el
213
+ THEN,
214
+
215
+ 02:53.080 --> 02:55.520
216
+ que recordemos que el THEN es lo que se va
217
+ a ejecutar
218
+
219
+ 02:55.520 --> 02:57.480
220
+ una vez que nuestra
221
+ promesa
222
+
223
+ 02:57.480 --> 02:59.680
224
+ se resuelve de forma
225
+ satisfactoria.
226
+
227
+ 03:00.520 --> 03:01.520
228
+ Ya que venimos
229
+ aqu铆,
230
+
231
+ 03:01.520 --> 03:03.840
232
+ queremos que nos traiga la respuesta,
233
+
234
+ 03:06.520 --> 03:11.520
235
+ y queremos que esa respuesta la pueda
236
+ pasar a JSON.
237
+
238
+ 03:14.680 --> 03:18.680
239
+ Y listo, ya que tengamos esa respuesta en
240
+ JSON,
241
+
242
+ 03:18.680 --> 03:20.680
243
+ necesitamos otro
244
+ THEN
245
+
246
+ 03:20.680 --> 03:22.520
247
+ para que entonces esa
248
+ respuesta
249
+
250
+ 03:23.920 --> 03:27.920
251
+ se convierte en nuestra data que vamos a
252
+ utilizar,
253
+
254
+ 03:27.920 --> 03:30.880
255
+ y lo que le vamos a pedir es que de
256
+ inicio
257
+
258
+ 03:33.280 --> 03:36.120
259
+ nos imprima qu茅 nos
260
+ devuelve,
261
+
262
+ 03:36.120 --> 03:38.040
263
+ cu谩les son los datos que nos devuelve.
264
+
265
+ 03:39.120 --> 03:42.520
266
+ Si algo sale mal, queremos el catch,
267
+
268
+ 03:43.480 --> 03:45.520
269
+ para que el catch
270
+ sea
271
+
272
+ 03:45.520 --> 03:48.880
273
+ que nos imprima el
274
+ error.
275
+
276
+ 03:48.880 --> 03:51.880
277
+ Aqu铆 es un que pueda tomar el error,
278
+
279
+ 03:51.880 --> 03:53.880
280
+ y aqu铆 le vamos a pedir nada m谩s
281
+ que
282
+
283
+ 03:55.280 --> 03:58.680
284
+ pues nos imprima cu谩l fue el
285
+ error.
286
+
287
+ 04:00.680 --> 04:03.280
288
+ Perfecto, y aqu铆 tenemos nuestra primera
289
+ promesa.
290
+
291
+ 04:03.280 --> 04:05.680
292
+ Tenemos fetch que nos est谩 regresando,
293
+
294
+ 04:05.680 --> 04:09.680
295
+ m谩s bien, fetch que va a hacer una
296
+ petici贸n a esta API.
297
+
298
+ 04:09.680 --> 04:11.680
299
+ Si esa petici贸n
300
+ funciona,
301
+
302
+ 04:11.680 --> 04:14.680
303
+ queremos que esa respuesta la pase en JSON,
304
+
305
+ 04:14.680 --> 04:17.680
306
+ si esto se termina de resolver de forma
307
+ exitosa,
308
+
309
+ 04:17.680 --> 04:20.680
310
+ queremos que esta respuesta la convierta
311
+ en datos,
312
+
313
+ 04:20.680 --> 04:24.680
314
+ la pase directamente a datos, y nos
315
+ imprima estos datos.
316
+
317
+ 04:24.680 --> 04:26.680
318
+ Si esto no
319
+ funciona,
320
+
321
+ 04:26.680 --> 04:30.680
322
+ queremos ver cu谩l fue el error que nos
323
+ est谩 regresando,
324
+
325
+ 04:30.680 --> 04:32.680
326
+ 驴no? 驴Qu茅 fue lo que no
327
+ sali贸?
328
+
329
+ 04:34.680 --> 04:36.680
330
+ Perfecto, entonces vamos a guardar aqu铆,
331
+
332
+ 04:37.680 --> 04:39.680
333
+ y ahora venimos a nuestro
334
+ navegador
335
+
336
+ 04:39.680 --> 04:44.680
337
+ y mandamos llamar nuestra opci贸n, fetch data.
338
+
339
+ 04:48.680 --> 04:51.680
340
+ Y podemos ver que tenemos ya una respuesta.
341
+
342
+ 04:52.680 --> 04:55.680
343
+ Si abrimos esta respuesta, tenemos aqu铆
344
+ los resultados,
345
+
346
+ 04:55.680 --> 04:58.680
347
+ y de los resultados ya nos est谩 trayendo,
348
+
349
+ 04:58.680 --> 05:01.680
350
+ de inicio, los primeros 20 personajes,
351
+
352
+ 05:01.680 --> 05:02.680
353
+ que en la documentaci贸n del
354
+ API,
355
+
356
+ 05:02.680 --> 05:04.680
357
+ posiblemente es la forma en la que te va a
358
+ decir,
359
+
360
+ 05:04.680 --> 05:06.680
361
+ te va a regresar como grupos de
362
+ 20,
363
+
364
+ 05:06.680 --> 05:09.680
365
+ y aqu铆 podemos ver que son personajes de
366
+ Rick and Morty.
367
+
368
+ 05:09.680 --> 05:13.680
369
+ Bien, aqu铆 es la forma en c贸mo utilizamos
370
+ un fetch,
371
+
372
+ 05:13.680 --> 05:17.680
373
+ que es una promesa, con sus den y sus catch.
374
+
375
+ 05:17.680 --> 05:21.680
376
+ Ahora, 驴c贸mo podemos hacer que esta
377
+ funci贸n
378
+
379
+ 05:21.680 --> 05:23.680
380
+ la pasemos a sink and
381
+ await?
382
+
383
+ 05:23.680 --> 05:25.680
384
+ Vamos para
385
+ all谩.
386
+
387
+ 05:25.680 --> 05:28.680
388
+ Entonces venimos aqu铆, esto lo voy a comentar,
389
+
390
+ 05:28.680 --> 05:30.680
391
+ para que se quede como
392
+ referencia,
393
+
394
+ 05:30.680 --> 05:32.680
395
+ porque voy a construir una funci贸n nueva,
396
+
397
+ 05:32.680 --> 05:34.680
398
+ que tambi茅n se va a llamar fetch data,
399
+
400
+ 05:34.680 --> 05:36.680
401
+ que esa funci贸n va a ser una
402
+ sink.
403
+
404
+ 05:38.680 --> 05:44.680
405
+ Entonces va a ser function fetch data,
406
+
407
+ 05:44.680 --> 05:47.680
408
+ pero como es un sink and
409
+ await,
410
+
411
+ 05:47.680 --> 05:51.680
412
+ nuestras funciones que queremos que se
413
+ conviertan en promesas,
414
+
415
+ 05:51.680 --> 05:55.680
416
+ tendr铆an que empezar con un sink, al inicio.
417
+
418
+ 05:55.680 --> 05:57.680
419
+ Entonces esto va a hacer que esta funci贸n,
420
+
421
+ 05:57.680 --> 06:01.680
422
+ esta misma funci贸n, ya nos regrese una
423
+ promesa,
424
+
425
+ 06:01.680 --> 06:04.680
426
+ o que est茅 esperando que sea una promesa.
427
+
428
+ 06:04.680 --> 06:06.680
429
+ Entonces aqu铆 comenzamos nuestra funci贸n,
430
+
431
+ 06:06.680 --> 06:08.680
432
+ no vamos a tener ning煤n
433
+ par谩metro,
434
+
435
+ 06:08.680 --> 06:11.680
436
+ y vamos a empezar con un
437
+ try.
438
+
439
+ 06:11.680 --> 06:15.680
440
+ A sink and await tiene try y
441
+ catch.
442
+
443
+ 06:15.680 --> 06:19.680
444
+ El try y catch, que ser铆a esto, y catch,
445
+
446
+ 06:19.680 --> 06:23.680
447
+ que el catch es muy similar al catch que
448
+ tenemos ac谩,
449
+
450
+ 06:23.680 --> 06:26.680
451
+ el try y el catch es lo que nos va a permitir,
452
+
453
+ 06:26.680 --> 06:28.680
454
+ entonces, hacer el manejo de los
455
+ errores
456
+
457
+ 06:28.680 --> 06:31.680
458
+ desde la sink y en el
459
+ await.
460
+
461
+ 06:31.680 --> 06:37.680
462
+ El try es pr谩cticamente el c贸digo que
463
+ tiene que pasar,
464
+
465
+ 06:37.680 --> 06:40.680
466
+ y si eso no funciona, entonces el
467
+ catch
468
+
469
+ 06:40.680 --> 06:44.680
470
+ nos va a regresar el error de lo que no
471
+ est谩 funcionando.
472
+
473
+ 06:45.680 --> 06:47.680
474
+ As铆 que empezamos con el
475
+ try,
476
+
477
+ 06:47.680 --> 06:50.680
478
+ esta es la sintaxis de poder utilizar un try,
479
+
480
+ 06:50.680 --> 06:56.680
481
+ y despu茅s ocupar铆amos el catch para poder
482
+ manejar el error.
483
+
484
+ 06:56.680 --> 07:00.680
485
+ Y el catch aqu铆 se manejar铆a con error.
486
+
487
+ 07:01.680 --> 07:04.680
488
+ Esta ser铆a la sintaxis de poder utilizar
489
+ un try-catch
490
+
491
+ 07:04.680 --> 07:07.680
492
+ adentro de un async, una funci贸n que es async.
493
+
494
+ 07:07.680 --> 07:11.680
495
+ Ahora, estando ac谩, vamos a generar una
496
+ variable
497
+
498
+ 07:11.680 --> 07:14.680
499
+ que se va a llamar
500
+ response,
501
+
502
+ 07:14.680 --> 07:18.680
503
+ y esa variable va a ser igual a un fetch,
504
+
505
+ 07:18.680 --> 07:22.680
506
+ que el fetch es la misma web API que vamos
507
+ a hacer
508
+
509
+ 07:22.680 --> 07:24.680
510
+ para poder hacer una petici贸n del API.
511
+
512
+ 07:24.680 --> 07:28.680
513
+ Y vamos a utilizar la misma
514
+ URL.
515
+
516
+ 07:30.680 --> 07:33.680
517
+ Pero, como estamos utilizando sink and await,
518
+
519
+ 07:33.680 --> 07:36.680
520
+ esta es una promesa, y entonces esperamos,
521
+
522
+ 07:36.680 --> 07:39.680
523
+ y aqu铆 es donde viene,
524
+ await.
525
+
526
+ 07:42.680 --> 07:47.680
527
+ Await indica que este c贸digo espera que se
528
+ resuelva la promesa,
529
+
530
+ 07:47.680 --> 07:48.680
531
+ que es
532
+ esto.
533
+
534
+ 07:48.680 --> 07:51.680
535
+ Nuestra funci贸n aqu铆 es una
536
+ async,
537
+
538
+ 07:51.680 --> 07:54.680
539
+ y entonces en la wait esperamos que
540
+ esto
541
+
542
+ 07:54.680 --> 07:58.680
543
+ sea el c贸digo que espera que se resuelva
544
+ la promesa,
545
+
546
+ 07:58.680 --> 08:01.680
547
+ que es como aqu铆 cuando est谩bamos iniciando,
548
+
549
+ 08:01.680 --> 08:03.680
550
+ nosotros est谩bamos con el
551
+ fetch.
552
+
553
+ 08:03.680 --> 08:05.680
554
+ Entonces, el await va a esperar que este
555
+ c贸digo
556
+
557
+ 08:05.680 --> 08:07.680
558
+ resuelva el tema de la
559
+ promesa.
560
+
561
+ 08:07.680 --> 08:11.680
562
+ Si esto funciona, entonces aqu铆 generamos
563
+ otra variable
564
+
565
+ 08:11.680 --> 08:13.680
566
+ que se va a llamar
567
+ data,
568
+
569
+ 08:13.680 --> 08:21.680
570
+ que va a ser igual a await response.json.
571
+
572
+ 08:23.680 --> 08:25.680
573
+ Y si esto se termina de
574
+ resolver,
575
+
576
+ 08:25.680 --> 08:31.680
577
+ entonces queremos que simplemente nos
578
+ devuelva
579
+
580
+ 08:31.680 --> 08:33.680
581
+ cu谩l es la data que nos
582
+ trae.
583
+
584
+ 08:33.680 --> 08:37.680
585
+ Entonces, si esta promesa se resuelve,
586
+
587
+ 08:37.680 --> 08:40.680
588
+ lo siguiente es que esta
589
+ respuesta,
590
+
591
+ 08:40.680 --> 08:44.680
592
+ como lo que traiga el fetch, se va a
593
+ guardar en respuesta,
594
+
595
+ 08:44.680 --> 08:47.680
596
+ entonces queremos que esta respuesta
597
+ puesto json,
598
+
599
+ 08:47.680 --> 08:49.680
600
+ que es que nos quede en un json, se guarde
601
+ en data,
602
+
603
+ 08:49.680 --> 08:52.680
604
+ y que nosotros podamos
605
+ imprimir
606
+
607
+ 08:52.680 --> 08:54.680
608
+ qu茅 es lo que trae esta
609
+ data.
610
+
611
+ 08:54.680 --> 08:58.680
612
+ Si esto no sucede por algo, simplemente
613
+ queremos
614
+
615
+ 08:58.680 --> 09:03.680
616
+ que nos imprima de momento el error que
617
+ nos trae.
618
+
619
+ 09:06.680 --> 09:07.680
620
+ Y
621
+ listo.
622
+
623
+ 09:07.680 --> 09:11.680
624
+ Ya con eso, guardamos, venimos a nuestro
625
+ navegador,
626
+
627
+ 09:11.680 --> 09:15.680
628
+ y si ponemos fetch
629
+ data,
630
+
631
+ 09:17.680 --> 09:19.680
632
+ nos trae de igual forma la petici贸n,
633
+
634
+ 09:19.680 --> 09:21.680
635
+ vemos aqu铆 que es una
636
+ promesa,
637
+
638
+ 09:21.680 --> 09:25.680
639
+ y si la abrimos, podemos ver que nos trae
640
+ el resultado,
641
+
642
+ 09:25.680 --> 09:27.680
643
+ igual con 20
644
+ personajes,
645
+
646
+ 09:27.680 --> 09:32.680
647
+ y es la misma respuesta que ten铆amos en la
648
+ promesa arriba.
649
+
650
+ 09:32.680 --> 09:35.680
651
+ Nos trae pr谩cticamente los mismos personajes.
652
+
653
+ 09:35.680 --> 09:37.680
654
+ Y estamos viendo que es una promesa.
655
+
656
+ 09:37.680 --> 09:39.680
657
+ Pr谩cticamente, a Sink and
658
+ Away,
659
+
660
+ 09:39.680 --> 09:42.680
661
+ nos est谩 regresando una promesa que ya se
662
+ termin贸 de hacer,
663
+
664
+ 09:42.680 --> 09:45.680
665
+ es una promesa que se complet贸 de forma
666
+ exitosa,
667
+
668
+ 09:45.680 --> 09:47.680
669
+ y es por eso que en la parte de
670
+ abajo
671
+
672
+ 09:47.680 --> 10:05.680
673
+ ya tenemos la respuesta exitosa de la promesa.
674
+
subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-app_5bc0e7ac-1f29-42b8-81f4-9ce6af240d4a.js ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ fetch("https://jsonplaceholder.typicode.com/posts")
2
+ .then((response) => response.json())
3
+ .then((data) => console.log(data));