Saltar al contenido
Curso de JavaScript
Todos los cursos Ir al ejercicio →

Objetos y JSON

  • ⏱ 45 minutos
  • 📶 Nivel: principiante
  • 🧩 Incluye ejercicio

💡 🎯 Al terminar esta lección podrás…

  • Crear y modificar objetos, y acceder a sus propiedades de varias formas.
  • Usar desestructuración, spread y Object.entries.
  • Leer datos con seguridad usando ?. y ??.
  • Convertir datos a JSON y procesar listas de objetos.

1.Qué es un objeto

Un objeto agrupa datos relacionados bajo nombres (propiedades). Mientras un array es una lista ordenada por posición ([0], [1]…), un objeto es un conjunto de pares nombre–valor: describe una cosa con todas sus características.

Un objeto que describe a una persona
const persona = {
  nombre: "Ana",
  edad: 28,
  activa: true,
  hobbies: ["leer", "correr"],
  direccion: { ciudad: "Lima", pais: "Perú" }
};

console.log(persona.nombre);              // notación de punto: "Ana"
console.log(persona["edad"]);             // notación de corchetes: 28
console.log(persona.direccion.ciudad);    // objetos dentro de objetos: "Lima"
console.log(persona.hobbies[0]);          // "leer"
AspectoArrayObjeto
Se identifica porPosición (0, 1…)Nombre ("nombre")
Ideal paraUna lista de cosas parecidasUna cosa con varias características
Sintaxis[ … ]{ clave: valor }
▶ Crear y modificar un objeto
Consola

2.Métodos y this

Una propiedad cuyo valor es una función se llama método. Dentro de él, this apunta al objeto que lo llamó:

▶ Métodos
Consola

⚠️ Importante · this y las funciones flecha

Las funciones flecha no tienen su propio this: heredan el del lugar donde se escribieron. Por eso, para los métodos de un objeto, usa la forma normal (nombre() { … }), no una flecha.

3.Atajos modernos: shorthand, desestructurar y spread

▶ Sintaxis cómoda
Consola

4.Recorrer objetos

FunciónDevuelveEjemplo
Object.keys(o)Array con las claves["nombre", "edad"]
Object.values(o)Array con los valores["Ana", 28]
Object.entries(o)Array de pares [clave, valor][["nombre","Ana"], ["edad",28]]
Object.assign(a, b)Copia propiedades de b en a(mejor usa spread)
Object.fromEntries(pares)Crea un objeto desde paresInverso de entries
▶ Recorrer un objeto
Consola

5.Acceso seguro: ?. y ??

Si pides una propiedad de algo que no existe (undefined o null), JavaScript lanza un error. El encadenamiento opcional ?. lo evita:

▶ Encadenamiento opcional
Consola

💡 Consejo · Combina ?. y ??

?. devuelve undefined si algo en la cadena falta, y ?? aporta un valor por defecto solo para null/undefined. Son muy útiles con datos que llegan de internet, donde nunca sabes qué campos faltan.

6.JSON: el formato de intercambio

JSON (*JavaScript Object Notation*) es un formato de texto para intercambiar datos entre programas. Se parece a un objeto de JavaScript, con reglas más estrictas: las claves y los textos van entre comillas dobles y no admite funciones ni undefined.

FunciónHaceEjemplo
JSON.stringify(valor)Convierte un valor a texto JSONJSON.stringify({a: 1}) → '{"a":1}'
JSON.parse(texto)Convierte texto JSON en un valorJSON.parse('{"a":1}') → {a: 1}
▶ Ida y vuelta con JSON
Consola

📌 Nota · Para qué sirve

JSON es el formato en que casi todas las APIs devuelven datos y en que se guardan cosas en localStorage (lecciones 10 y 11). Un error de sintaxis en el texto hace que JSON.parse lance una excepción, así que se suele envolver en try…catch.

7.Arrays de objetos: el patrón más común

En la práctica, casi todos los datos son listas de objetos: usuarios, productos, tareas, mensajes. Y todo lo que aprendiste de arrays se aplica:

▶ Una tienda pequeña
Consola

8.Un vistazo a las clases

Cuando necesitas crear muchos objetos con la misma forma y comportamiento, existen las clases: moldes para fabricar objetos.

▶ Una clase sencilla
Consola

📌 Nota · No son imprescindibles

Para empezar, funciones y objetos literales bastan para casi todo. Las clases te serán útiles más adelante, y las encontrarás en muchas bibliotecas. Con lo visto aquí ya puedes leerlas.

9.Errores frecuentes

📒 Apuntes para llevar

  • Un objeto agrupa datos relacionados en pares clave: valor; se accede con obj.clave o obj["clave"].
  • Una propiedad que es una función es un método; this apunta al objeto. Usa la sintaxis normal, no flechas, para métodos.
  • Atajos: propiedades abreviadas { nombre }, desestructuración const { a, b } = obj y spread { ...obj, a: 1 }.
  • Object.keys/values/entries convierten un objeto en arrays para recorrerlo.
  • ?. evita errores con valores que faltan y ?? aporta valores por defecto.
  • JSON.stringify y JSON.parse convierten entre objetos y texto; structuredClone hace copias profundas.
  • Las listas de objetos son el formato más habitual de datos; los métodos de array funcionan igual.
  • Los objetos se copian y comparan por referencia, no por contenido.

10.Glosario

TérminoSignificado
ObjetoConjunto de pares nombre–valor que describe una cosa.
PropiedadUn par nombre–valor dentro de un objeto.
MétodoPropiedad cuyo valor es una función.
thisEn un método, el objeto que lo llamó.
DesestructuraciónSacar propiedades de un objeto en variables: const { a } = obj.
JSONFormato de texto para intercambiar datos.
ReferenciaDirección de un objeto: dos variables pueden apuntar al mismo.
Encadenamiento opcionalOperador ?. que evita errores si algo es null o undefined.

🧠 Comprueba lo aprendido

Elige una respuesta en cada pregunta. Verás al instante si acertaste y por qué.

¿Cómo accedes a la propiedad cuyo nombre está en la variable clave?

const a = { x: 1 }; const b = a; b.x = 2; ¿Cuánto vale a.x?

¿Cuál es una forma correcta de copiar un objeto de un solo nivel?

usuario?.direccion?.ciudad cuando direccion es null, devuelve…

¿Qué hace JSON.parse('{"a":1}')?

Tu progreso se guarda en este navegador y se refleja en el índice del curso.

💡 🚀 ¡Ahora te toca!

La práctica fija lo aprendido. Pasa al ejercicio de esta lección.

Ir al ejercicio