我的意思是: 在一个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吗?
答案 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
};