是否可以从 base class [node JS] 中的静态方法实例化子 class?

Is it possible to instantiate child class from a static method in base class [node JS]?

我想从基 class

中的静态方法创建子实例 class
class Base {
  static find(id) {
    const attributes = database.get(id);
    return new getChildClass(attributes);
  }
}

class FirstChild extends Base {
}

class SecondChild extends Base {
}

我想要 FirstChild.find(1) 到 return FirstChild 的实例和 SecondChild.find(1) 到 return SecondChild

的实例

是否可以在 Node JS 中实现?

当从 child class 调用 find 时,find 中的 this 将引用 child class , 所以你可以 return new this from find:

class Base {
  static find(id) {
    const attributes = 'foo'; // database.get(id);
    return new this(attributes);
  }
}

class FirstChild extends Base {
}

class SecondChild extends Base {
}

console.log(FirstChild.find(1) instanceof FirstChild);
console.log(SecondChild.find(1) instanceof SecondChild);