作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想使用 Javascript/Node JS 创建一个静态类。我用谷歌,但我找不到任何有用的例子。
我想在 Javascript ES6 中创建类似这样的东西(C#):
public static MyStaticClass {
public static void someMethod() {
//do stuff here
}
}
目前,我有这个类,但我认为每次从“require”调用这段代码时,它都会创建一个新实例。
function MyStaticClass() {
let someMethod = () => {
//do some stuff
}
}
var myInstance = new MyStaticClass();
module.exports = factory;
最佳答案
请注意,JS 是 prototype-based programming , 而不是 class-based .
您可以在对象中创建一个方法,而不是多次创建类来访问其方法,例如
var MyStaticClass = {
someMethod: function () {
console.log('Doing someMethod');
}
}
MyStaticClass.someMethod(); // Doing someMethod
由于在 JS 中,一切都是对象(primitive types + undefined
+ null
除外)。就像您在上面创建 someMethod
函数时一样,您实际上创建了一个新的函数对象,可以在 MyStaticClass
对象中使用 someMethod
访问该对象。 (这就是为什么您可以访问 someMethod
对象的属性,例如 MyStaticClass.someMethod.prototype
或 MyStaticClass.someMethod.name
)
但是,如果您发现使用 class. ES6 现在支持 static methods .
例如
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
关于javascript - 如何在 javascript/nodejs (ES6) 中创建静态函数/对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40987138/
我是一名优秀的程序员,十分优秀!