Propiedades y métodos estáticos
🛠️ Métodos static
Un método static pertenece a la clase en sí misma y no a las instancias de la clase. Esto significa que puedes llamar a un método static sin necesidad de crear una instancia de la clase.
🔍 ¿Para qué se usan los métodos static?
- ⚙️ Utilidades y helpers: Definir funciones que no dependen del estado de una instancia específica, como operaciones comunes relacionadas con la clase.
- 🏗️ Funciones de fábrica: Crear instancias de la clase de maneras específicas, manteniendo la lógica centralizada.
- 🔑 Acceso a propiedades estáticas: Manipular propiedades estáticas de la clase.
✍️ ¿Cómo se definen los métodos static?
Usa la palabra clave static antes del nombre del método:
class Calculadora { static sumar(a, b) { return a + b; }
restar(a, b) { return a - b; }}
console.log(Calculadora.sumar(5, 3)); // 8
const calc = new Calculadora();console.log(calc.restar(5, 3)); // 2🔗 Acceso a otros métodos estáticos
Los métodos static pueden llamarse entre sí usando this:
class Conversor { static aCelsius(fahrenheit) { return ((fahrenheit - 32) * 5) / 9; }
static mostrarConversion(celsius) { console.log(`${celsius}°C = ${this.aFahrenheit(celsius)}°F`); }
static aFahrenheit(celsius) { return (celsius * 9) / 5 + 32; }}
Conversor.mostrarConversion(25); // "25°C = 77°F"📌 Consideraciones
- 👥 Herencia: Los métodos
staticse heredan, permitiendo que las subclases los utilicen o sobrescriban.
🏗️ Propiedades static
Las propiedades estáticas pertenecen a la clase en sí misma, no a sus instancias, y son compartidas entre todas las instancias.
🔍 ¿Para qué se usan las propiedades estáticas?
- 📊 Variables compartidas: Datos comunes entre todas las instancias.
- ⚠️ Datos constantes: Valores que no cambian durante el ciclo de vida de la aplicación.
- 📈 Contadores y seguimiento: Monitoreo de estadísticas o estados relevantes para toda la clase.
✍️ ¿Cómo se definen las propiedades static?
Se definen con la palabra clave static:
class Contador { static contador = 0;
static incrementar() { this.contador++; }
static obtenerContador() { return this.contador; }}
Contador.incrementar();console.log(Contador.obtenerContador()); // 1👩👧 Herencia y propiedades estáticas
Las subclases también pueden acceder y modificar propiedades estáticas:
class SubContador extends Contador { static mostrarContador() { console.log(`Contador: ${this.contador}`); }}
SubContador.mostrarContador(); // "Contador: 1"📌 Consideraciones
- ⚡ Alcance y contexto: No se acceden desde instancias.
- 🔄 Inicialización: Se inicializan en la declaración o métodos estáticos.
class Ejemplo { static prop1 = "Hola"; static prop2;
static inicializar() { this.prop2 = "Mundo"; }}
console.log(Ejemplo.prop1); // "Hola"Ejemplo.inicializar();console.log(Ejemplo.prop2); // "Mundo"