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