poo - javascript class properties
Cómo crear funciones/objetos estáticos en javascript/nodejs(ES6) (3)
Puede usar la palabra clave static
para definir un método para una clase
class MyStatisticsClass {
static someMethod() {
return "MyStatisticsClass static method"
}
}
console.log(MyStatisticsClass.someMethod());
Quiero crear una clase estática usando Javascript / Node JS. Utilicé google pero no puedo encontrar ningún ejemplo útil.
Quiero crear en Javascript ES6 algo como esto (C #):
public static MyStaticClass {
public static void someMethod() {
//do stuff here
}
}
Por ahora, tengo esta clase, pero creo que este código creará una nueva instancia cada vez que se llame desde "require".
function MyStaticClass() {
let someMethod = () => {
//do some stuff
}
}
var myInstance = new MyStaticClass();
module.exports = factory;
Tenga en cuenta que JS es una programación basada en prototipos , en lugar de una class-based .
En lugar de crear la clase varias veces para acceder a su método, puede crear un método en un objeto, como
var MyStaticClass = {
someMethod: function () {
console.log(''Doing someMethod'');
}
}
MyStaticClass.someMethod(); // Doing someMethod
Como en JS, todo es un objeto (excepto los tipos primitivos + undefined
+ null
). Al igual que cuando crea someMethod
función de someMethod
anterior, en realidad creó un nuevo objeto de función al que se puede acceder con someMethod
dentro del objeto MyStaticClass
. (Es por eso que puede acceder a las propiedades de someMethod
objeto de someMethod
como MyStaticClass.someMethod.prototype
o MyStaticClass.someMethod.name
)
Sin embargo, si le resulta más cómodo usar clase. ES6 ahora funciona con métodos estáticos .
P.ej
MyStaticClass.js
class MyStaticClass {
static someMethod () {
console.log(''Doing someMethod'');
}
static anotherMethod () {
console.log(''Doing anotherMethod'');
}
}
module.exports = MyStaticClass;
Main.js
var MyStaticClass = require("./MyStaticClass");
MyStaticClass.someMethod(); // Doing someMethod
MyStaticClass.anotherMethod(); // Doing anotherMethod
Yo usaría un objeto literal:
const myObject = {
someMethod() {
// do stuff here
}
}
module.exports = myObject;