如何在javascript / nodejs中创build静态函数/对象(ES6)

我想用Javascript / Node JS创build一个静态类。 我用谷歌,但我找不到任何有用的例子。

我想在Javascript ES6中创build这样的东西(C#):

public static MyStaticClass { public static void someMethod() { //do stuff here } } 

现在,我有这个类,但是我认为这个代码每次从“require”调用时都会创build一个新的实例。

 function MyStaticClass() { let someMethod = () => { //do some stuff } } var myInstance = new MyStaticClass(); module.exports = factory; 

请注意,JS是基于原型的编程 ,而不是基于类 。

而不是多次创build类来访问它的方法,你可以在一个对象中创build一个方法

 var MyStaticClass = { someMethod: function () { console.log('Doing someMethod'); } } MyStaticClass.someMethod(); // Doing someMethod 

由于在JS中,一切都是一个对象(除了基本types + undefined + null )。 就像上面创build一些方法函数一样,你实际上创build了一个新的函数对象,可以用MyStaticClass对象中的someMethod来访问。 (这就是为什么你可以访问someMethod对象的属性,如MyStaticClass.someMethod.prototypeMyStaticClass.someMethod.name

但是,如果你觉得使用类更方便。 ES6现在可以使用静态方法 。

例如

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 

我会使用一个对象文字:

 const myObject = { someMethod() { // do stuff here } } module.exports = myObject; 

您可以使用static关键字来定义一个类的方法

 class MyStatisticsClass { static someMethod() { return "MyStatisticsClass static method" } } console.log(MyStatisticsClass.someMethod());