¿Qué es la POO en JavaScript? Objetos Literales, Estado y Mutabilidad
Aprende qué es la Programación Orientada a Objetos en JavaScript, la sintaxis de objetos literales, métodos concisos y la naturaleza dinámica de sus propiedades.
La Naturaleza de los Objetos en JavaScript
A diferencia de lenguajes clásicos basados rígidamente en clases (como Java, C# o PHP), en JavaScript casi todo es un objeto y los objetos pueden existir por sí mismos sin necesidad de que una clase haya sido declarada previamente.
Un objeto en JavaScript es simplemente una colección dinámica de pares clave-valor:
- Las claves que contienen datos se denominan propiedades (representan el estado).
- Las claves que contienen funciones se denominan métodos (representan el comportamiento).
Objetos Literales: La Forma Más Rápida de Crear Objetos
La forma más común y expresiva de definir un objeto en JavaScript es mediante la sintaxis literal con llaves {}:
const usuario = {
nombre: "Carlos",
email: "[email protected]",
saldo: 150.00,
// Método con sintaxis concisa de ES6:
depositar(monto) {
this.saldo += monto;
}
};
Mutabilidad Dinámica en JavaScript
Por defecto, los objetos en JavaScript son mutables y dinámicos: puedes añadir nuevas propiedades o eliminar existentes en cualquier momento durante la ejecución:
- Añadir propiedad:
usuario.activo = true; - Eliminar propiedad:
delete usuario.email; - Acceso dinámico:
usuario["nombre"](útil cuando la clave viene en una variable).
⚡ Creación y Manipulación de Objetos Literales en JavaScript
Código ejecutable en el Sandbox. Haz clic en "Pruébalo tú mismo »" para ejecutarlo en la consola interactiva:
// 1. Definición de un Objeto Literal con Estado y Métodos
const cuentaUsuario = {
titular: "Carlos Mendoza",
saldo: 500.00,
activo: true,
// Método para consultar saldo
consultar() {
return `${this.titular} tiene un saldo disponible de $${this.saldo.toFixed(2)}`;
},
// Método para ingresar fondos
depositar(monto) {
if (monto <= 0) {
console.warn("⚠️ El monto debe ser mayor a cero.");
return;
}
this.saldo += monto;
console.log(` Depósito de $${monto.toFixed(2)} procesado con éxito.`);
},
// Método para retirar fondos
retirar(monto) {
if (monto > this.saldo) {
console.error(`❌ Saldo insuficiente para retirar $${monto.toFixed(2)}.`);
return false;
}
this.saldo -= monto;
console.log(` Retiro de $${monto.toFixed(2)} completado.`);
return true;
}
};
// 2. Interacción con el Objeto
console.log("=== ESTADO INICIAL ===");
console.log(cuentaUsuario.consultar());
console.log("\n=== OPERACIONES ===");
cuentaUsuario.depositar(250.00);
cuentaUsuario.retirar(100.00);
cuentaUsuario.retirar(900.00); // Intento que supera el saldo
// 3. Mutabilidad dinámica: Agregar una propiedad al vuelo
cuentaUsuario.nivel = "Premium";
console.log(`\nNivel de cliente asignado: ${cuentaUsuario.nivel}`);
console.log("Estado final del objeto:", cuentaUsuario);
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección¿Qué característica define a los objetos en JavaScript a diferencia de lenguajes rígidamente tipados?
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.🚀 ¿Quieres dominar Manual de Programación Orientada a Objetos en JavaScript (POO) y crear proyectos reales?
Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.
🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.