Classes, Static Members (elementos estáticos)

Las clases tienen componentes estáticos. Estos elementos no están asociados con una instancia particular de la clase. Pueden ser accedidos a través del constructor de la clase.

class MiClase {
    static x = 10;

    static imprimirX() {
        // para acceder a una propiedad estática utilizamos this dentro de un método estático
        console.log(`El valor de x es: ${this.x}`);
    }

    imprimirX() {
        // para acceder a una propiedad estática usamos el nombre de la clase dentro de un método de una instancia
        console.log(`El valor de x en una instancia es: ${MiClase.x}`);
    }
}

// para acceder a un método lo hacemos directamente desde la clase
MiClase.imprimirX();

// para acceder a una propiedad estática lo hacemos directamente desde la clase
console.log(`El valor obtenido de x es: ${MiClase.x}`);

const miClase = new MiClase();
miClase.imprimirX();

Salida…

El valor de x es: 10
El valor obtenido de x es: 10
El valor de x en una instancia es: 10

Los elementos estáticos pueden ser también public, protected y private.

class MiClase {
    private static x = 10;
}

console.log(MiClase.x); // <- esta linea generará un error
// Property 'x' is private and only accessible within class 'MiClase'.

Los métodos estáticos también se heredan.

class Base {
    static saludar() {
        console.log("Hola mundo");
    }
}

class Derivada extends Base {}

Derivada.saludar();
Hola mundo

Palabras reservadas en clases

Debido a que las clases son funciones que pueden ser invocadas con new, algunos nombres no pueden ser definidos como static, algunos ejemplos son: name, length y call.

class Base {
    static name = "S!"; // <- esta línea generara un error
    // Static property 'name' conflicts with built-in property 'Function.name' of constructor function 'Base'
}

VPN

  • Ir a la oferta de NordVPN

Moda

Accesorios