Lección 33: Objetos Literales
🧠 Concepto
Section titled “🧠 Concepto”Los objetos literales son la forma más común de crear objetos en JavaScript. Se definen con llaves {} y contienen pares clave-valor (propiedades y métodos).
const persona = { nombre: 'Ana', edad: 28, saludar() { console.log(`Hola, soy ${this.nombre}`); }};Acceso a propiedades
Section titled “Acceso a propiedades”const libro = { titulo: '1984', autor: 'George Orwell', 'año publicación': 1949};
// Notación de puntoconsole.log(libro.titulo); // "1984"
// Notación de corchetes (para propiedades con espacios o dinámicas)console.log(libro['año publicación']); // 1949
const clave = 'autor';console.log(libro[clave]); // "George Orwell"Añadir, modificar y eliminar propiedades
Section titled “Añadir, modificar y eliminar propiedades”const usuario = {};usuario.nombre = 'Carlos'; // Añadirusuario.edad = 30; // Añadirusuario.edad = 31; // Modificardelete usuario.edad; // Eliminar
console.log(usuario); // { nombre: 'Carlos' }💻 Ejemplo
Section titled “💻 Ejemplo”// Objetos anidadosconst estudiante = { nombre: 'Luis', cursos: { javascript: { nota: 95, profesor: 'Ana' }, python: { nota: 88, profesor: 'Carlos' } }, direccion: { ciudad: 'Madrid', pais: 'España' }};
console.log(estudiante.cursos.javascript.nota); // 95console.log(estudiante['cursos']['python']['profesor']); // "Carlos"
// Comparación de objetos (por referencia, no por valor)const obj1 = { a: 1 };const obj2 = { a: 1 };const obj3 = obj1;
console.log(obj1 === obj2); // false (distintas referencias)console.log(obj1 === obj3); // true (misma referencia)console.log(JSON.stringify(obj1) === JSON.stringify(obj2)); // true (comparando valores)⚠️ Nota
Section titled “⚠️ Nota”Los objetos se comparan por referencia, no por valor. Dos objetos con exactamente el mismo contenido son distintos porque ocupan distintas posiciones en memoria.
const a = { x: 1 };const b = { x: 1 };a.x = 2;console.log(b.x); // 1 — son independientes
// Para comparar por valor, usar JSON.stringify o librerías como LodashLas propiedades pueden ser strings o Symbols. Si usas un número como clave, se convierte a string automáticamente.
Usa la notación de punto siempre que sea posible (es más legible). Reserva la notación de corchetes para:
- Propiedades con nombres dinámicos (variables)
- Propiedades con caracteres especiales o espacios
- Acceso a propiedades numéricas
Para clonar objetos de forma simple, usa el spread operator {...obj} en lugar de asignar manualmente.
📝 Ejercicio
Section titled “📝 Ejercicio”Crea un objeto nevera que contenga:
- Propiedad
marca(string) - Propiedad
productos(array de objetos con nombre y cantidad) - Método
agregarProducto(nombre, cantidad)que añada un producto - Método
listarProductos()que muestre todos los productos
const nevera = { // Escribe aquí};
nevera.agregarProducto('Leche', 2);nevera.agregarProducto('Huevos', 12);nevera.listarProductos();// "Productos en la nevera: Leche (2), Huevos (12)"