创建类的实例以调用静态方法

时间:2020-04-22 04:29:40

标签: javascript typescript class static instance

我最近遇到了一些看起来像这样的代码,

class MyClass {
  private static instance: MyClass;
  private myString: string;

  public static Instance(myString) {
    if (!this.instance) {
      this.instance = new this(myString);
    }
    return this.instance;
  }
  private constructor(myString: string) {
    this.myString = myString;
  }
  public getMyString() {
    console.log(this.myString);
  }
}

我的问题是,做这样的事情需要什么?人们为什么要创建这样的实例,而不是创建“普通方式”类的实例。

做这样的事情有什么好处?

1 个答案:

答案 0 :(得分:1)

它看起来像Singleton pattern。此模式用于确保一个类只有一个实例:构造函数是私有的,因此不能从该类的外部使用它。

关于这个特定的实现,我将建议一些解决方法:

    静态方法中的
  • this.instance应该改为MyClass.instance
  • 在接下来的调用new this(myString)中,myString将是undefined,因为无法从静态上下文中引用非静态变量
  • 无法设置myString
  • public static Instance { ... }应该是静态方法,而不是:public static instance() { ... }