ES6类静态方法与函数

时间:2019-03-08 05:54:15

标签: javascript node.js es6-class

我正在使用NodeJS并打算编写一些实用程序函数。我在这里有两个选择。

第一个是传统方法,即

module.exports = {
    random: () => Math.random(),
};

第二种选择是将ES6类与静态方法一起使用,例如

class MyMath {
    static random() {
        return Math.random();
    }
}
module.exports = MyMath;

从编程/单元测试的角度来看,哪个更好?还是它们几乎相同,因为ES6类本质上是一种语法糖?

更新:感谢发表评论的人。我看到那些问题问类静态方法实例方法或原型方法对象方法,但我的方法更像类静态方法vs。对象方法。

3 个答案:

答案 0 :(得分:3)

在JavaScript中使用仅静态类作为名称空间是语言的残余,其中类是唯一可用的实体。模块已经充当了名称空间。

如果需要单例对象,则应使用对象文字:

module.exports = {
    random: () => Math.random(),
};

已经有exports个对象可以使用:

exports.random = () => Math.random();

或带有ES模块:

export const random = () => Math.random();

答案 1 :(得分:1)

使用class语法,您可能会得到超出预期的结果,它是可以用new调用的构造函数,而使用对象文字语法,您可以提供非功能对象。既然那确实是您要公开的内容,那就去做吧。

答案 2 :(得分:0)

仅具有静态方法的类与一堆隔离的函数相同。在这种情况下,您可能不需要使用它。 至于单元测试,它几乎是相同的,因为仅具有静态方法的类与函数的差别不大。