【问题标题】:Any striking difference between class/instance methods vs static methods for use in applications?在应用程序中使用的类/实例方法与静态方法之间有什么显着区别吗?
【发布时间】:2018-04-13 17:00:41
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这个问题太模糊了。您已经指出了静态方法和实例方法之间的区别;将方法设为静态是否有优势取决于您希望如何使用 API。如果您认为开发人员不必为了使用特定方法而实例化一个对象,那么请将其设为静态。
  • @333 我知道了。我认为必须将“静态”关键字添加到功能方法中。谢谢

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


【解决方案1】:

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

如果加了static,那么方法只能用类名前缀调用,不能是对象的实例。

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

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

【讨论】:

  • 你绝对彻底地杀死了它。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 2014-03-25
相关资源
最近更新 更多