programacion poo orientada objetos es6 clases javascript node.js ecmascript-6 javascript-objects

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;