对于实用程序模块,我可以使用静态方法或只导出方法。我认为第一个解决方案更好,尽管我看到了很多带有第二个选项的实现。有没有"细微差别"在这里我不考虑?
答案 0 :(得分:1)
导出方法更安全,因为您无法访问类属性。还要注意,在javascrpt中,类的概念没有太多意义,它已被引入以使感觉更加舒适的开发人员具有oo语言背景。尝试使用对象原型设计。
答案 1 :(得分:1)
我认为带有静态方法的类更好,原因如下:
如果您的类名是 Utils
,则默认情况下所有导入也会将其导入为 Utils
。但是,对于导出的函数,它们可以作为 Utils
导入,但这只是一种约定,在所有不同的地方可能都不会如此。
名为 Utils
的文件中名为 utils.js
的类将所有实用方法整齐地组合在一起,在美学上比到处定义的扁平函数更令人愉悦。
一个类可以在其方法中使用 properties
,但为此您需要 @babel/plugin-proposal-class-properties。同样,比到处定义的变量要好得多。
答案 2 :(得分:0)
我能想到的几个选项,如果这些方法是另一个类的实用方法,你可以使用handbaked mixins:http://coffeescriptcookbook.com/chapters/classes_and_objects/mixins或依赖于下划线/ lowdash中类似的东西
如果你想要封装方法并且仍然具有扩展能力,你可以这样做:
class Foo
foo = -> alert 'foo'
@static: -> foo()
Foo.static() #=> 'foo'
Foo.foo #=> undefined
new Foo().foo #=> undefined
class Bar extends Foo
Bar.static() # => 'foo'
jsfiddle:http://jsfiddle.net/4ne7ccxk/