Javascript ES6 中的静态构造函数

新手上路,请多包涵

在 ES6 中,我可以像下面这样创建静态方法。但是我需要定义一个静态构造函数但没有成功。我需要在加载类时只运行一次的东西。我有什么办法可以实现这样的事情吗?

 class Commander{

    static onData(){
         console.log("blabla");
    }
}

原文由 Barış Velioğlu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 272
1 个回答

在类主体中包含类设置代码似乎更整洁,因此“类表达式”是独立的。 ES6 在类主体中接受语法 static constructor() {/* do stuff */} 但从不运行它。也许是为了将来的语言扩展?无论如何,这是实现预期结果的一种方法。诀窍是使用立即执行的函数表达式来初始化静态属性,该函数表达式会执行您的类设置:

 class MyClass {
  static #staticConstructorDummyResult = (function() {
    console.log('static constructor called') // once!
  })()
  constructor () {
    console.log('instance constructor called')
  }
}
let obj = new MyClass(),
    obj2 = new MyClass()

在“静态构造函数”中,您可以使用 MyClass.prop = value 向类对象添加属性,或者如果您希望引用 MyClass as this ,函数表达式到 箭头函数表达式

# 使 staticConstructorDummyResult 私有 - 现在应该可以在所有主要浏览器中使用(感谢@Donald Duck)。

原文由 Hugh Allen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题