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
Viendo ahora - 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
15:38 min - 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
Implicaciones de duplicar código
Resumen
Cuando trabajamos con objetos en JavaScript, es muy común enfrentar un problema silencioso pero costoso: la duplicación de código. Imagina que necesitas representar varios cohetes, cada uno con sus propiedades y métodos. ¿Vas a copiar y pegar el mismo bloque una y otra vez? Las funciones constructoras llegan para resolver exactamente eso, permitiéndote generar objetos de forma eficiente y reutilizable.
¿Qué es la notación literal de objetos y por qué no siempre es suficiente?
En JavaScript, la forma más directa de crear un objeto es mediante su notación literal [0:12]. Simplemente declaras una variable y le asignas keys y values, e incluso puedes añadir métodos dentro del mismo bloque.
javascript
const cohete = {
nombre: "Falcon",
velocidad: 28000,
mensaje: function() {
return El cohete ${this.nombre} viaja a ${this.velocidad} km/h;
}
};
Este enfoque funciona perfectamente cuando solo necesitas un objeto. El problema aparece cuando requieres crear un segundo, un tercero o decenas de cohetes con la misma estructura. En ese momento, te ves obligado a duplicar líneas de código, y eso trae consecuencias serias.
¿Por qué duplicar código es un problema grave en programación?
Duplicar código no es solo una cuestión estética. Genera una cadena de dificultades que afectan directamente la calidad de cualquier proyecto [0:38]:
- Mantenimiento difícil: con dos objetos quizás es manejable, pero con decenas se vuelve muy complejo revisar y actualizar cada uno.
- Aumento de complejidad: no solo vigilas una estructura, sino muchas que deben funcionar correctamente al mismo tiempo.
- Errores humanos: al modificar un objeto puedes olvidar aplicar el mismo cambio en otro, generando inconsistencias difíciles de detectar.
- Escalabilidad limitada: agregar diez objetos más sobre una base ya duplicada es como una bola de nieve que crece sin control [1:24].
- Consumo de tiempo y recursos: revisar objeto por objeto consume horas que podrían invertirse en mejorar funcionalidades.
- Dificultad para identificar errores: cuando algo falla, rastrear el problema entre cientos de líneas repetidas se convierte en una tarea agotadora [2:04].
¿Qué es el principio Don't Repeat Yourself y cómo se aplica?
Existe un principio fundamental en programación conocido como DRY (Don't Repeat Yourself) [1:42]. Su idea central es escribir código modular: fragmentos pequeños, generales y reutilizables. Cada vez que duplicas un bloque, estás violando este principio. El objetivo es que una pieza de lógica exista en un solo lugar y pueda invocarse cuantas veces sea necesario.
¿Cómo resuelven las funciones constructoras el problema de la duplicación?
La solución es crear una función que produzca objetos [2:12]. En lugar de escribir cada objeto a mano, defines una función constructora que actúa como un molde. Cada vez que la invocas, genera un nuevo objeto con la misma estructura pero con los datos que tú le pases.
javascript
function Cohete(nombre, velocidad) {
this.nombre = nombre;
this.velocidad = velocidad;
this.mensaje = function() {
return El cohete ${this.nombre} viaja a ${this.velocidad} km/h;
};
}
const falcon = new Cohete("Falcon", 28000); const atlas = new Cohete("Atlas", 25000);
Con este patrón obtienes varias ventajas:
- Reutilización real: un solo fragmento de código sirve para crear tantos objetos como necesites.
- Mantenimiento centralizado: si necesitas cambiar algo, lo haces en la función y se refleja en todos los objetos futuros.
- Código escalable: agregar nuevos cohetes es cuestión de una sola línea por cada uno.
Las funciones constructoras aprovechan la capacidad natural de las funciones para encapsular lógica y ejecutarla múltiples veces con diferentes argumentos. Así, el código se mantiene limpio, predecible y fácil de depurar.
¿Ya utilizas funciones constructoras en tus proyectos o prefieres otro enfoque para crear objetos? Comparte tu experiencia en los comentarios.