Listo (Ctrl + Enter para ejecutar) Bootcamp Fullstack »
app.js
Tab = 4 espacios
1
// 1. Declaración de Clase en ES6
class Producto {
    // Campos públicos de clase (Class Fields - ES2022)
    activo = true;
    fechaRegistro = new Date().toLocaleDateString();

    // Método Constructor Único
    constructor(id, nombre, precio, stock = 0) {
        if (precio < 0) {
            throw new RangeError("El precio no puede ser negativo.");
        }
        this.id = id;
        this.nombre = nombre;
        this.precio = precio;
        this.stock = stock;
    }

    // Métodos de Instancia (automáticamente colocados en Producto.prototype)
    calcularIva(tasa = 0.21) {
        return parseFloat((this.precio * tasa).toFixed(2));
    }

    obtenerPrecioTotal() {
        return parseFloat((this.precio + this.calcularIva()).toFixed(2));
    }

    actualizarStock(unidades) {
        this.stock += unidades;
        console.log(`📦 Stock de [${this.nombre}] actualizado a: ${this.stock} unidades.`);
    }

    describir() {
        return `[#${this.id}] ${this.nombre} | Precio: $${this.precio.toFixed(2)} (+IVA: $${this.obtenerPrecioTotal()}) | Stock: ${this.stock}`;
    }
}

// ==========================================
// PRUEBA EN EL SANDBOX
// ==========================================
console.log("=== CREACIÓN DE INSTANCIAS CON ES6 ===");
const laptop = new Producto(1, "MacBook Air M2", 1199.00, 10);
const teclado = new Producto(2, "Teclado Mecánico Keychron", 89.50, 25);

console.log(laptop.describir());
console.log(teclado.describir());

console.log("\n=== OPERACIONES ===");
laptop.actualizarStock(-2); // Venta de 2 unidades
teclado.actualizarStock(15); // Reposición de inventario

console.log("\n=== VERIFICACIÓN DE PROTOTIPOS BAJO EL CAPÓ ===");
console.log("¿describir() reside en Producto.prototype?:", Producto.prototype.hasOwnProperty('describir')); // true!
console.log("¿laptop es instancia de Producto?:", laptop instanceof Producto); // true
Haz clic para editar este código
Vista Previa
Consola Virtual JavaScript