Curso de JavaScript para Principiantes - Lección 8: Objetos: Datos Estructurados
¡Bienvenido a la octava lección! Hasta ahora, has aprendido a manejar variables, operadores, condicionales, bucles, funciones y arreglos. Ahora vamos a explorar los objetos, una forma poderosa de organizar datos relacionados, como las caracterÃsticas de un producto o los detalles de un usuario. Los objetos son como "fichas" que agrupan información y acciones, y son esenciales para modelar cosas del mundo real en tu código.
¿Qué son los objetos?
Un objeto es una colección de propiedades, donde cada propiedad tiene un nombre (clave) y un valor. A diferencia de los arreglos, que usan Ãndices numéricos para acceder a elementos, los objetos usan nombres descriptivos, lo que los hace ideales para representar entidades con datos relacionados.
Ejemplo mental: Imagina un objeto como una tarjeta de un personaje en un juego:
- Nombre: Dragón
- Fuerza: 80
- Vida: 100
- Atacar: (una acción que el personaje puede realizar)
1. Creando y Accediendo a Objetos
Para crear un objeto, usas llaves {}
y defines
propiedades con la sintaxis clave: valor
.
Ejemplo realista: Supongamos que quieres representar un evento en una agenda:
let evento = {
titulo: "Reunión de trabajo",
fecha: "2025-05-10",
hora: "10:00",
lugar: "Oficina central"
};
console.log(evento.titulo); // Imprime: Reunión de trabajo
console.log(evento["lugar"]); // Imprime: Oficina central
- Notación de punto (
evento.titulo
): Más clara y común. - Notación de corchetes
(
evento["lugar"]
): Útil para claves dinámicas o con espacios.
2. Modificando y Añadi sistema de gestión de estudiantes:
class Estudiante {
constructor(nombre, id, notas) {
this.nombre = nombre;
this.id = id;
this.notas = notas; // Arreglo de notas
}
calcularPromedio() {
let suma = 0;
for (let nota of this.notas) {
suma += nota;
}
return suma / this.notas.length;
}
estado() {
let promedio = this.calcularPromedio();
return promedio >= 5 ? "Aprobado" : "Suspenso";
}
}
let estudiante1 = new Estudiante("MarÃa", "A001", [7, 8, 6]);
let estudiante2 = new Estudiante("Juan", "A002", [4, 3, 5]);
console.log(`${estudiante1.nombre}: ${estudiante1.estado()}`); // Imprime: MarÃa: Aprobado
console.log(`${estudiante2.nombre}: ${estudiante2.estado()}`); // Imprime: Juan: Suspenso
3. Métodos: Acciones dentro de Objetos
Los objetos pueden contener métodos (funciones) para realizar acciones relacionadas con sus datos.
Ejemplo realista: Un objeto que representa un reproductor de música:
let reproductor = {
cancionActual: "Bohemian Rhapsody",
volumen: 50,
reproduciendo: false,
reproducir() {
this.reproduciendo = true;
console.log(`Reproduciendo: ${this.cancionActual}`);
},
pausar() {
this.reproduciendo = false;
console.log(`Pausado: ${this.cancionActual}`);
},
cambiarVolumen(nuevoVolumen) {
this.volumen = nuevoVolumen;
console.log(`Volumen ajustado a ${this.volumen}`);
}
};
reproductor.reproducir(); // Imprime: Reproduciendo: Bohemian Rhapsody
reproductor.cambiarVolumen(75); // Imprime: Volumen ajustado a 75
reproductor.pausar(); // Imprime: Pausado: Bohemian Rhapsody
4. Reutilizando Objetos con Clases
Para crear múltiples objetos similares, usa clases como plantillas.
Ejemplo realista: Un sistema de reservas de un restaurante:
class Reserva {
constructor(nombre, fecha, personas) {
this.nombre = nombre;
this.fecha = fecha;
this.personas = personas;
this.confirmada = false;
}
confirmar() {
this.confirmada = true;
console.log(`Reserva de ${this.nombre} para ${this.personas} personas confirmada.`);
}
cancelar() {
this.confirmada = false;
console.log(`Reserva de ${this.nombre} cancelada.`);
}
}
let reserva1 = new Reserva("GarcÃa", "2025-05-15", 4);
let reserva2 = new Reserva("López", "2025-05-16", 2);
reserva1.confirmar(); // Imprime: Reserva de GarcÃa para 4 personas confirmada.
reserva2.cancelar(); // Imprime: Reserva de López cancelada.
5. Objetos y Arreglos Combinados
Puedes usar objetos dentro de arreglos para manejar listas de entidades.
Ejemplo: Una lista de tareas en una app de productividad:
let tareas = [
{ id: 1, texto: "Comprar leche", completada: false },
{ id: 2, texto: "Llamar al médico", completada: true }
];
function mostrarTareas() {
for (let tarea of tareas) {
let estado = tarea.completada ? "Completada" : "Pendiente";
console.log(`Tarea ${tarea.id}: ${tarea.texto} - ${estado}`);
}
}
mostrarTareas();
// Imprime:
// Tarea 1: Comprar leche - Pendiente
// Tarea 2: Llamar al médico - Completada
Buenas Prácticas
- Usa objetos para entidades: Si los datos representan algo con propiedades relacionadas (como un libro o un usuario), usa un objeto.
- Nombres claros: Usa claves descriptivas (por
ejemplo,
titulo
en lugar det
). - Métodos especÃficos: Añade métodos que tengan
sentido para el objeto (como
prestar
para un libro). - Usa clases para reutilizar: Si necesitas muchos objetos similares, crea una clase como plantilla.
- Combina con arreglos: Usa arreglos de objetos para listas de entidades (como una lista de productos).
Ejercicios Prácticos
-
Objeto para un evento:
- Crea un objeto
concierto
con las propiedadesartista
,fecha
,lugar
yprecio
. - Añade un método
mostrarDetalles
que imprima un mensaje como "Concierto de [artista] en [lugar]". - Llama al método.
- Crea un objeto
-
Clase para pelÃculas:
- Crea una clase
Pelicula
con las propiedadestitulo
,director
yduracion
(en minutos). - Añade un método
esLarga
que devuelvatrue
si la duración es mayor a 120 minutos. - Crea dos instancias y prueba el método.
- Crea una clase
-
Lista de objetos:
- Crea un arreglo
cursos
con tres objetos, cada uno con las propiedadesnombre
yduracion
(en meses). - Escribe una función que recorra el arreglo e imprima solo los cursos con duración mayor a 6 meses.
- Crea un arreglo
-
Carrito de compras:
- Crea un objeto
carrito
con una propiedaditems
(un arreglo vacÃo) y métodosagregarItem
(que añada un objeto connombre
yprecio
) ycalcularTotal
. - Añade dos items y muestra el total.
- Crea un objeto
Instrucción: Prueba estos ejercicios en JSFiddle o en la consola del navegador
(F12
). Por ejemplo:
let obj = { nombre: "Test" };
console.log(obj.nombre);
Para la Próxima Lección
En la Lección 9, exploraremos la manipulación del DOM, que te permitirá interactuar con páginas web, cambiando texto, colores o estructuras HTML desde JavaScript. ¡Sigue practicando los objetos con los ejercicios de hoy para estar listo!