TechLead

Objetos

Mapas clave/valor y prototipos

Objetos en JavaScript

Los objetos son colecciones de pares clave-valor. Son fundamentales en JavaScript - casi todo es un objeto.

Creando Objetos

// Literal de objeto (preferido)
const persona = {
  nombre: "Ana",
  edad: 25,
  esEstudiante: true
};

// Constructor Object
const obj = new Object();
obj.nombre = "Juan";

// Claves computadas
const clave = "email";
const usuario = {
  nombre: "Maria",
  [clave]: "maria@ejemplo.com"
};

Accediendo a Propiedades

const persona = {
  nombre: "Ana",
  edad: 25,
  direccion: {
    ciudad: "Madrid",
    pais: "Espana"
  }
};

// Notacion de punto
console.log(persona.nombre); // "Ana"

// Notacion de corchetes
console.log(persona["edad"]); // 25

// Propiedades anidadas
console.log(persona.direccion.ciudad); // "Madrid"

// Propiedad que no existe
console.log(persona.telefono); // undefined

// Optional chaining (ES2020)
console.log(persona.trabajo?.empresa); // undefined (sin error)

Modificando Objetos

const persona = { nombre: "Ana" };

// Agregar propiedades
persona.edad = 25;
persona["email"] = "ana@ejemplo.com";

// Modificar propiedades
persona.nombre = "Ana Maria";

// Eliminar propiedades
delete persona.email;

// Verificar si existe propiedad
console.log("nombre" in persona); // true
console.log(persona.hasOwnProperty("edad")); // true

Metodos de Object

const persona = { nombre: "Ana", edad: 25 };

// Object.keys - array de claves
console.log(Object.keys(persona)); // ["nombre", "edad"]

// Object.values - array de valores
console.log(Object.values(persona)); // ["Ana", 25]

// Object.entries - array de pares [clave, valor]
console.log(Object.entries(persona));
// [["nombre", "Ana"], ["edad", 25]]

// Object.assign - copiar/mezclar objetos
const copia = Object.assign({}, persona);
const mezclado = Object.assign({}, persona, { ciudad: "Madrid" });

// Spread operator (preferido para copiar)
const copia2 = { ...persona };
const mezclado2 = { ...persona, ciudad: "Madrid" };

Destructuring de Objetos

const persona = {
  nombre: "Ana",
  edad: 25,
  direccion: {
    ciudad: "Madrid",
    pais: "Espana"
  }
};

// Destructuring basico
const { nombre, edad } = persona;
console.log(nombre); // "Ana"

// Renombrar variables
const { nombre: nombrePersona } = persona;
console.log(nombrePersona); // "Ana"

// Valores por defecto
const { telefono = "No disponible" } = persona;
console.log(telefono); // "No disponible"

// Destructuring anidado
const { direccion: { ciudad } } = persona;
console.log(ciudad); // "Madrid"

// En parametros de funcion
function saludar({ nombre, edad }) {
  return `Hola ${nombre}, tienes ${edad} anos`;
}
console.log(saludar(persona));

Metodos en Objetos

const calculadora = {
  valor: 0,

  sumar(n) {
    this.valor += n;
    return this; // Para encadenar
  },

  restar(n) {
    this.valor -= n;
    return this;
  },

  obtener() {
    return this.valor;
  }
};

// Encadenamiento de metodos
calculadora.sumar(5).sumar(3).restar(2);
console.log(calculadora.obtener()); // 6