Qué es un objeto
Un objeto agrupa datos con nombre en una sola estructura. Cómo se crea, cómo se accede a sus propiedades y cuándo conviene usar objeto en lugar de array.
Definición rápida
Un objeto es una estructura de datos que agrupa valores relacionados en propiedades con nombre, accesibles por ese nombre en lugar de por posición.
Un objeto agrupa datos relacionados bajo un mismo nombre, con la diferencia de que a cada dato se accede por su etiqueta y no por su posición. Si un array es una lista, un objeto es una ficha.
Crear y acceder
const producto = {
nombre: "Teclado",
precio: 49.99,
stock: 12,
};
producto.nombre; // "Teclado"
producto["precio"]; // 49.99
producto.color; // undefined ← no existe, no da error
Cada línea dentro de las llaves es una propiedad: una clave, dos puntos y un valor. El valor puede ser de cualquier tipo, incluidos otros objetos y arrays.
Las dos formas de acceso no son equivalentes:
const campo = "precio";
producto.campo; // undefined ← busca una propiedad llamada "campo"
producto[campo]; // 49.99 ← usa el valor de la variable
Modificar y añadir
producto.precio = 39.99; // modificar
producto.marca = "Genérica"; // añadir, sin declararla antes
Object.keys(producto); // ["nombre", "precio", "stock", "marca"]
Igual que con los arrays, un objeto declarado con const se puede modificar por dentro: const bloquea la reasignación de la variable, no el contenido.
Objeto o array: el mismo dato, dos formas
// con array hay que recordar qué significa cada posición
const alumnoArray = ["Ana", 8];
alumnoArray[1]; // 8, pero... ¿nota o edad?
// con objeto se lee solo
const alumno = { nombre: "Ana", nota: 8 };
alumno.nota; // 8
Regla práctica: si los elementos significan cosas distintas, objeto; si son la misma cosa repetida, array. Y lo más habitual en programas reales es la combinación de ambos: una lista de fichas.
Errores típicos
- Usar el punto con un nombre guardado en variable:
obj.campoen lugar deobj[campo]. - Acceder a un nivel que no existe:
pedido.pago.metodolanza unTypeErrorsipagono está definido. - Comparar objetos con
===: compara identidad, no contenido. - Copiar por asignación:
const b = a;comparte el mismo objeto; para copiar,{ ...a }.
Dónde se practica
Definir un objeto es sencillo. La dificultad aparece al trabajar con datos con forma: listas de objetos, propiedades anidadas, copias frente a referencias y funciones que devuelven estructuras nuevas sin tocar la original. Eso es el módulo 6 del curso, con ejercicios autocorregidos que comprueban también que no has modificado los datos de entrada. Consulta el temario.
Preguntas frecuentes
¿Cuándo uso un objeto y cuándo un array?
Objeto cuando describes una cosa con características distintas (un producto: nombre, precio, stock). Array cuando tienes varias cosas equivalentes en orden (todos los productos).
¿Cuál es la diferencia entre punto y corchetes?
producto.precio se usa cuando conoces el nombre de la propiedad al escribir el código. producto[campo] se usa cuando el nombre está guardado en una variable.
¿Qué pasa si accedo a una propiedad que no existe?
Devuelve undefined, sin error. El error llega al operar con ese undefined o al intentar acceder a algo dentro de él.