我有许多具有以下形式的类。

static defaultInstance() {

 if (!defaultInstance) {
   defaultInstance = new Child1()
 }
 return defaultInstance
}


由于它们具有公共基类,因此我想将公共函数添加到基类,但不知道如何做。
(在使用新的Child1()时遇到麻烦)

最佳答案

如果Child1应该引用“当前”类,即调用defaultInstance的类,则可以

defaultInstance = new this();


这遵循正常的JavaScript规则:如果使用Child1.defaultInstance()调用该函数,则this引用Child1

但是,这可能无法满足您的要求。如果在基类上定义defaultInstance,则所有子类都共享相同的defaultInstance变量。

如果您希望每个类都有一个实例,则每个类都需要自己的defaultInstance方法,或者您需要使用一个属性,例如

if (!this.__defaultInstance) {
  this.__defaultInstance = new this();
}

08-18 11:31