【问题标题】:Javascript class static method vs functionJavascript类静态方法与函数
【发布时间】:2021-06-04 15:57:52
【问题描述】:

以下两段代码:

const Game = {
    start: () => { ...run some logic; return true; },
    stop: () => { ...run some logic; return false; }
}
class Game {
    static start() { ...run some logic; return true; }
    static stop() { ...run some logic; return false; }
}

在运行 Game.start()Game.stop() 时两者都有效。

其中任何一个都有优点/缺点吗?

【问题讨论】:

    标签: javascript ecmascript-6 es6-class


    【解决方案1】:

    如果你只想要这个对象的一个​​实例,那么真的没有什么有意义的区别。

    Game 对象声明和Game 类声明都只是单例(具有某些属性的对象的一个​​预先声明的实例)。

    使用class 真正更有意义的地方是,如果您想构造多个这些对象,并且希望每个实例都有自己单独的实例数据,或者您想从另一个定义继承。这就是class 中的差异和功能非常明显和有用的地方。所有这些也可以在没有class 的情况下进行模拟(就像我们在将class 关键字添加到语言之前所做的那样),但是使用类可以使继承和定义将动态构造的对象更加简单和更具声明性。

    因此,正如您在问题中显示的那样,只有一个预定义的单例,偏好一个比另一个没有有意义的优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-03
      • 2012-05-09
      • 2017-12-19
      • 2011-01-17
      • 1970-01-01
      • 2020-10-17
      相关资源
      最近更新 更多