Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
app.js
Tab = 4 espacios
1
class Usuario {
    // 1. Propiedad Estática Compartida (Contador Global)
    static #totalUsuariosRegistrados = 0;
    static ROL_DEFAULT = "estudiante";

    constructor(nombre, email, rol = Usuario.ROL_DEFAULT) {
        this.nombre = nombre;
        this.email = email;
        this.rol = rol;

        // Cada vez que se crea un objeto, incrementamos el contador de la clase
        Usuario.#totalUsuariosRegistrados++;
    }

    // 2. Getter Estático para consultar el total
    static get totalRegistrados() {
        return Usuario.#totalUsuariosRegistrados;
    }

    // 3. Método Estático Factoría (Factory Method)
    static crearInvitado() {
        const idAleatorio = Math.floor(1000 + Math.random() * 9000);
        return new Usuario(`Invitado_${idAleatorio}`, "[email protected]", "invitado");
    }

    // 4. Método Estático Utilitario (Validador de email)
    static esEmailValido(email) {
        return typeof email === 'string' && email.includes('@') && email.includes('.');
    }

    obtenerPerfil() {
        return `[${this.rol.toUpperCase()}] ${this.nombre} (${this.email})`;
    }
}

// ==========================================
// PRUEBA EN EL SANDBOX (Sin instanciar primero)
// ==========================================
console.log("=== UTILIDADES ESTÁTICAS ===");
console.log("¿'[email protected]' es válido?:", Usuario.esEmailValido("[email protected]")); // true
console.log("¿'correo-falso' es válido?:", Usuario.esEmailValido("correo-falso")); // false
console.log("Rol por defecto de la plataforma:", Usuario.ROL_DEFAULT);

console.log("\n=== CREACIÓN DE INSTANCIAS ===");
const u1 = new Usuario("Carlos Mendoza", "[email protected]", "admin");
const u2 = new Usuario("Valeria Torres", "[email protected]");
const u3 = Usuario.crearInvitado(); // Usando el método factoría estático

console.log(u1.obtenerPerfil());
console.log(u2.obtenerPerfil());
console.log(u3.obtenerPerfil());

console.log("\n=== CONTADOR GLOBAL ESTÁTICO ===");
console.log(`Total de usuarios vivos en memoria: ${Usuario.totalRegistrados}`);
Haz clic para editar este código
Vista Previa
Consola Virtual JavaScript