Propiedades y métodos estáticos JavaScript
JavaScript no utiliza la palabra static para definir variables y métodos estáticos aunque sí es posible simular estos elementos asociados al objeto y que funcionan del mismo modo que en otros lenguajes.
Crear propiedades y métodos estáticos
Podemos definir estas propiedades y métodos dentro o fuera de la función constructora. Estas propiedades y métodos solo existen una vez en memoria y son compartidos por todas las instancias del objeto.
Fuera del constructor
//Función constructora de un objeto
function nombreObjeto(parámetros){
//Declaración de las propiedades
this.propiedad1 = valor;
this.propiedad2 = valor;
...........
}
//Declaración de propiedades estáticas fuera del constructor
nombreObjeto.nombrePropiedad3 = valor;
nombreObjeto.nombrePropiedad4 = valor;
//Declaración de métodos estáticos fuera del constructor
nombreObjeto.métodoEstático1 = function(parámetros){...},
nombreObjeto.métodoEstático2 = function(parámetros){...},
Dentro del constructor
//Función constructora de un objeto
function nombreObjeto(parámetros){
//Declaración de las propiedades
this.propiedad1 = valor;
this.propiedad2 = valor;
..........
//Declaración de propiedades estáticas dentro del constructor
nombreObjeto.nombrePropiedad3 = valor;
nombreObjeto.nombrePropiedad4 = valor;
//Declaración de métodos estáticos dentro del constructor
nombreObjeto.métodoEstático1 = function(parámetros){...};
nombreObjeto.métodoEstático2 = function(parámetros){...};
}
Para llamar a una propiedad o método estático en JavaScript hay que hacerlo con el nombre del objeto. Si intentamos llamarlos con una instancia del mismo el resultado es undefined.
Ejemplos
function Moneda(valor,divisa){
//Propiedades normales
this.valor = valor;
this.divisa = divisa;
//Método normal
this.cambiarDivisa = function(nueva){
this.divisa = nueva;
}
//Propiedad estática
Moneda.cambioDolares = 1.34;
//Método estático
Moneda.modificarCambio = function(nuevo){
Moneda.cambioDolares = nuevo;
}
}
//Instancia de un objeto moneda
var moneda1 = new Moneda(100,"euro");
//Usar las propiedades normales
alert("El valor de la moneda 1 es "+moneda1.valor);
//Usar el método normal
moneda1.cambiarDivisa("libra");
//Usar la propiedad estática
alert("El cambio es "+Moneda.cambioDolares);
//Llamada al método estático
Moneda.modificarCambio(1.50);
Si te ha gustado no olvides compartir en redes sociales.
Espero que te haya servido. Cualquier duda deja un comentario. Un saludo
Una idea sobre “Propiedades y métodos estáticos JavaScript”
Y con ES6 usando la sintaxis de [class] como sería ?