一个类中的静态和非静态方法都被认为是不好的做法吗?

时间:2015-04-09 15:09:55

标签: javascript static-methods

我的意思是: 在一个javascript类中,我有一些方法不使用> this<,它们只能通过实例“public”方法调用。 这是否意味着我需要将这些方法放入不同的类中?

示例:

function TemplateRenderer(vars) {
    var a = this.transform_vars(vars); // doesn't use any instance vars
    this.b = this.even_further_transform(a);
}
TemplateRenderer.prorotype.render(tpl) {uses this.b}

问题是 - 我应该在课堂外放置trnasform_vars吗?

1 个答案:

答案 0 :(得分:3)

  

我应该将transform_vars放在课堂外吗?

没有。 transform_vars似乎与您的TemplateRenderer课程密切相关。因此,除非您发现自己需要在其他地方转换变量(以便可以证明额外的实用程序对象是合理的),您应该将它放在类结构中。

  

它们仅由实例“公共”方法调用

你仍然可以将这些方法设为私有,即将所有内容放在IEFE中。你可能不想暴露它们。

  

不使用this

的方法

是静态的,是的。虽然在你的课程中确切地放置它们并不重要,但是在javascript中将它们放在构造函数对象上是标准做法。这样,可以在不构造任何实例的情况下调用它们(如果放在.prototype上,则访问它们)。

所以你可能会这样做

function TemplateRenderer(vars) {
    var a = TemplateRenderer.transform_vars(vars);
    …
}
TemplateRenderer.transform_vars = function(vars) {
    … // doesn't use any instance vars
};