class/instance 方法与应用程序中使用的静态方法之间有什么显着区别吗?

Any striking difference between class/instance methods vs static methods for use in applications?

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

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

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

我知道静态方法是直接在 class 上创建的,不能在 class 的实例上调用,它们通常用于创建实用函数,但我只想知道是否有如果在为应用程序创建功能时未添加静态,则会产生不利影响或任何影响。

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

如果添加了static,则只能调用带有class名称前缀的方法,不能是对象的实例。

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

因此,不将静态方法实际声明为静态的缺点是,当您没有对象的实例时,使用它并不干净。这就是发明静态方法的目的 - 使声明和使用不需要实例的 class 命名空间的函数变得干净。