Contenido del curso
Primeros Pasos
- 5

¡Hola Mundo!
06:13 min - 6

Anatomía de una variable
09:23 min - 7

Tipos de datos: Mutabilidad e inmutabilidad
10:55 min - 8

Paso por valor
11:06 min - 9

Paso por referencia
07:00 min - 10

Creación de strings
11:33 min - 11

Concatenación de strings
08:31 min - 12

Manipulación de strings
12:13 min - 13

Tipo de dato primitivo: number
09:30 min - 14

Conversión a Booleanos
05:08 min - 15

Tipos de datos primitivos: null, undefined, symbol y bigint
07:28 min - 16

Conversión de tipos: Type Casting y Coercion
04:38 min - 17

Conversión de tipos explícita e implícita
12:20 min - 18

Proyecto: Crea un perfil para redes sociales con JavaScript
07:23 min
Funciones y This
- 19

Anatomía de una función
11:39 min - 20

Preguntas a Desarrolladores Senior: ¿Por qué aprender Desarrollo Web?
02:11 min - 21

Funciones vs Métodos
10:01 min - 22

Funciones puras e impuras
11:22 min - 23

Identificador this
11:38 min - 24

Métodos bind, call y apply
10:09 min - 25

Funciones flecha y enlace léxico
10:31 min - 26

Implicaciones de duplicar código
03:19 min - 27

Funciones constructoras
10:41 min - 28

10 Tipos de funciones
01:39 min - 29

Objeto window y modo estricto
07:37 min - 30

Tipos de binding
01:11 min - 31

Expresiones vs Sentencias
04:02 min - 32

Proyecto: Crea biografías de personajes con JavaScript
12:51 min
Lógica y ciclos
- 33

Operadores de comparación
06:12 min - 34

Operadores lógicos
04:33 min - 35

Ejecución condicional: if
07:45 min - 36

Proyecto: Adivina el número
09:36 min - 37

Ejecución condicional: ternario
05:24 min - 38

Ejecución condicional: switch
12:08 min - 39

Loop: for
07:31 min - 40

Loop: forEach
03:57 min - 41

Loop: for of
04:26 min - 42

Loop: for in
07:38 min - 43

Loop: while
03:56 min - 44

Loop: do while
03:13 min - 45

Proyecto: Juego adivina la palabra
15:56 min
Fundamentos de arrays y modificación
- 46

Introducción a Arrays
09:09 min - 47

Mutabilidad e inmutabiliad de Arrays
07:56 min - 48

Modificación básica del final con push(), pop()
04:33 min - 49

Ejercicio: Stack de libros
16:03 min - 50

Modificación del principio con shift(), unshift()
10:21 min - 51

Modificación avanzada con splice(), reverse(), sort(), fill()
16:37 min - 52

Proyecto: Juego de cartas
15:37 min - 53

Preguntas a Desarrolladores Senior: Estrategias y métodos de estudio
01:10 min
Iteración de Arrays
- 54

Iteración con map() y forEach()
12:53 min - 55

Filtrado y reducción con filter() y reduce()
11:34 min - 56

Ejercicio: Calificación promedio aprobatoria
05:27 min - 57

Búsqueda de elementos con find() y findIndex()
03:52 min - 58

Ejercicio: Encuentra al ganador de una rifa
11:21 min - 59

Proyecto: Análisis de transacciones
10:55 min - 60

Proyecto: Análisis de transacciones parte 2
08:01 min
Métodos específicos y Operaciones
- 61

Unir y entrelazar con concat(), spread operator y join()
12:05 min - 62

Verificación y evaluación con every() y some()
05:15 min - 63

Métodos de búsqueda con includes(), indexOf() y lastIndexOf()
07:05 min - 64

Ejercicio: Encontrando los índices
11:09 min - 65

Crear copias con slice()
05:28 min - 66

Spread operator: casos de uso
07:11 min
Arrays multidimencionales
Clases y Objetos
- 71

Anatomia de un Objeto
06:48 min - 72

Trabajando con objetos
12:52 min - 73

Función constructora
14:31 min - 74

¿Qué es una clase?
06:17 min - 75

Prototipos y herencias
02:15 min - 76

Herencia en la práctica
Viendo ahora - 77

Prototipos en la práctica
10:42 min - 78

this en JavaScript
05:36 min - 79

Proyecto: Crea una red social
12:25 min - 80

Proyecto: Crea una red social parte 2
09:00 min
Herencia en la práctica
Resumen
Comprender cómo JavaScript gestiona internamente las clases y sus relaciones es fundamental para escribir código limpio y reutilizable. La propiedad prototipo y el mecanismo de herencia son dos pilares que permiten compartir métodos y propiedades entre objetos sin duplicar código, y dominarlos marca la diferencia entre un desarrollador principiante y uno con bases sólidas en programación orientada a objetos.
¿Qué es la propiedad prototipo y por qué solo existe en funciones y clases?
La propiedad prototipo es algo que JavaScript genera de forma automática cuando creamos una clase constructora o una función constructora [0:06]. No es algo que programemos manualmente; simplemente aparece. Su función es almacenar todos los métodos y propiedades que definimos dentro de esa clase o función.
- Solo existe en clases y funciones constructoras, nunca en instancias [1:00].
- Permite que las instancias u otras clases que extiendan de ella accedan a esos métodos y propiedades compartidos.
- Funciona como un contenedor interno que asegura la reutilización de código.
Cuando generamos una instancia con new, esa instancia no posee la propiedad prototipo por sí misma, pero sí puede acceder a los métodos y propiedades a través de la cadena de prototipos de su clase constructora.
¿Cómo se construye una clase base y se extiende con herencia?
Para ilustrar el concepto, se construye una clase llamada Animal con un constructor que recibe nombre y tipo, y un método emitirSonido [1:25]:
javascript class Animal { constructor(nombre, tipo) { this.nombre = nombre; this.tipo = tipo; } emitirSonido() { console.log("El animal emite un sonido"); } }
Esta clase es un molde genérico. Si necesitamos algo más específico, como representar perros con su raza, creamos una nueva clase que extienda de Animal [3:05]:
javascript
class Perro extends Animal {
constructor(nombre, tipo, raza) {
super(nombre, tipo);
this.raza = raza;
}
emitirSonido() {
console.log("El perro ladra");
}
correr() {
console.log(${this.nombre} corre alegremente);
}
}
¿Qué hace la palabra reservada extends?
Al escribir extends Animal, le indicamos a JavaScript que la clase Perro va a heredar todos los métodos y propiedades de Animal [3:20]. Esto significa que no necesitamos replicar nombre ni tipo dentro de Perro, porque ya existen en la clase padre.
¿Para qué sirve super dentro del constructor?
La palabra reservada super llama al constructor de la clase base [4:15]. Sin super(nombre, tipo), no podríamos usar this.nombre ni this.tipo dentro de Perro, porque esas propiedades pertenecen a Animal. Es el puente que conecta la clase hija con las propiedades de la clase padre.
- Sin
super, tendríamos que eliminarextendsy duplicar código. - Con
super, reutilizamos lo que ya existe y solo añadimos lo nuevo, comothis.raza.
¿Qué significa reescribir un método heredado?
El método emitirSonido existe tanto en Animal como en Perro, pero con contenido diferente [5:45]. Cuando creamos una instancia de Perro y llamamos a ese método, JavaScript ejecuta la versión de Perro, no la de Animal. Esto se conoce como sobreescritura de métodos: la clase hija redefine el comportamiento heredado.
¿Cómo verificar los prototipos y la herencia en la práctica?
Al crear una instancia y explorar los prototipos, todo cobra sentido [6:30]:
javascript const perroUno = new Perro("Bobby", "perro", "pug"); console.log(perroUno); // { nombre: "Bobby", tipo: "perro", raza: "pug" } perroUno.correr(); // "Bobby corre alegremente" perroUno.emitirSonido(); // "El perro ladra"
Para inspeccionar la propiedad prototipo directamente en las clases constructoras [8:10]:
Animal.prototypemuestra el métodoemitirSonidoy el constructorAnimal.Perro.prototypemuestraemitirSonido(sobreescrito),correry además hereda el prototipo deAnimal.
Esto confirma que la cadena de prototipos conecta Perro con Animal, permitiendo que las instancias accedan a propiedades y métodos de ambas clases sin duplicación.
El uso correcto de extends, super y la comprensión de los prototipos te permitirá construir estructuras de código escalables y organizadas. Si quieres profundizar, experimenta creando más clases hijas y observa cómo se comporta la cadena de prototipos en la consola.