Tema 1 · Fundamentos POO JS

¿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:

ObjetoLiteral.js
Solo lectura
// 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);
Pruébalo tú mismo » Se abre en una nueva pestaña con ejecución en vivo
🧠
Mini-Quiz de Retención
Comprueba tu comprensión antes de pasar a la siguiente lección
1 Pregunta
Pregunta 1
¿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.