Upload batch from C CLI
Browse filesUploaded via hf-downloader C client
This view is limited to 50 files because it contains too many changes. 聽 See raw diff
- .gitattributes +23 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/04-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-Lecturas recomendadas.txt +1 -0
- 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
- 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
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/05-index_23e34316-5be6-49e9-b2bf-a78e5c48b1f7.js +40 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-Lecturas recomendadas.txt +1 -0
- 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
- 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
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-index_384b7837-2cc2-4536-ac3b-b67f93155a03.js +40 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/06-index_6a991b46-e782-4d78-a468-526db36453e2.js +40 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-M茅todos y herencia protot铆pica en JavaScript.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-M茅todos y herencia protot铆pica en JavaScript.vtt +655 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-index_58862723-5875-440e-973f-d6b69b7383c9.js +40 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/07-index_f73e3a49-7ee5-4713-a9f9-2a9cc854b45c.js +40 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Uso de this en Clases y Funciones Constructoras.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-Uso de this en Clases y Funciones Constructoras.vtt +420 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-index_125edb51-afc3-47ce-8f9c-070dd742b2cd.js +20 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/08-index_17803c0e-d45f-47e5-8773-08ff8a4a998d.js +20 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-Resumen.html +0 -0
- 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
- 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
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/09-index_f210d63d-0f86-4336-a938-c7bdb343c5d6.js +69 -0
- 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
- 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
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-index_5665e02f-31fe-4c5f-a003-0f6fa407346f.js +69 -0
- subir/Curso de Fundamentos de JavaScript/05-Programaci贸n Orientada a Objetos/10-index_b9edb5bd-74c5-4aa1-a1cf-31873cf62ed2.js +69 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Programaci贸n S铆ncrona y As铆ncrona en JavaScript.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Programaci贸n S铆ncrona y As铆ncrona en JavaScript.vtt +409 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/01-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Promesas en JavaScript Asincron铆a y Manejo de Estados.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Promesas en JavaScript Asincron铆a y Manejo de Estados.vtt +894 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/02-app_3fd37998-3a9c-486d-8eeb-3794a9ea8bd3.js +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Lecturas recomendadas.txt +1 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Resumen.html +0 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Uso de AsyncAwait para Promesas As铆ncronas en JavaScript.mp4 +3 -0
- subir/Curso de Fundamentos de JavaScript/06-Asincron铆a en JavaScript/03-Uso de AsyncAwait para Promesas As铆ncronas en JavaScript.vtt +674 -0
- 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));
|