Módulo 6 · Estructuras de Datos

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.campo en lugar de obj[campo].
  • Acceder a un nivel que no existe: pedido.pago.metodo lanza un TypeError si pago no 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.