类/实例方法与用于应用程序的静态方法之间有什么显着差异?

时间:2018-04-13 17:00:42

标签: javascript api express static-methods class-method

我正在为应用程序构建API。我想知道在编写功能方法之间是否有任何区别:

class Foo {
  static method1(req, res) {}
  static method2(req, res) {}
}

class Foo {
  method1(req, res) {}
  method2(req, res) {}
}

我知道静态方法直接在类上进行,并且在类的实例上不可调用,它们通常用于创建实用程序函数,但我只是想知道如果没有添加静态则是否存在缺点或任何影响同时为应用程序创建功能。

1 个答案:

答案 0 :(得分:1)

如果未添加static,则只能在对象的实例上调用该方法。

如果添加static,则只能使用类名前缀调用该方法,而不能使用该对象的实例调用该方法。

如果您的方法可以是静态的(不引用任何实例数据或使用this来引用对象实例),那么您可以将其设置为静态或非静态。如果你使它非静态,它仍然可以正常工作,但它只能在对象本身的实例上调用,或者直接引用Foo.prototype.method()

因此,不使静态方法实际上被声明为静态的缺点是,当你没有对象的实例时,使用它并不是那么干净。这就是为什么发明了静态方法 - 使它变得干净,以声明和使用不需要实例的类命名空间函数。