【问题标题】:Is having both static and non-static methods in one class considered bad practise? [closed]在一个类中同时使用静态和非静态方法是否被认为是不好的做法? [关闭]
【发布时间】:2015-04-09 15:09:54
【问题描述】:

我的意思是: 在一个 javascript 类中,我有一些不使用 >this

例子:

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 放在课堂之外吗?

【问题讨论】:

  • 有很多方法可以在 javascript 中编写完全相同的东西,通常,这只是偏好问题。您能给我们提供一个实际的例子来正确回答您的问题吗?
  • @briosheje 完成,希望对您有所帮助

标签: javascript static-methods


【解决方案1】:

我应该把transform_vars放在课外吗?

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

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

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

不使用this的方法

是静态的,是的。虽然将它们放在类中的确切位置并不重要,但将它们放在构造函数对象上是 javascript 的标准做法。这样一来,它们就可以在没有构造任何实例的情况下被调用(如果放在 .prototype 上,它们就会被访问)。

所以你可能会这样做

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

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 2020-08-06
    • 2011-02-01
    相关资源
    最近更新 更多