Javascript 检查类是否是未实例化的类的子类

Javascript 检查类是否是未实例化的类的子类,javascript,ecmascript-6,es6-class,Javascript,Ecmascript 6,Es6 Class,假设我在JavaScript模块中有以下内容: class A { ... } class B extends A { ... } class C extends B { ... } 在不创建C实例的情况下,如何确认C是a的后代 register(B); register(C); register(obj) { // I need this test, but without the new call if (!new obj() instanceof A) { throw

假设我在JavaScript模块中有以下内容:

class A { ... }
class B extends A { ... }
class C extends B { ... }
在不创建C实例的情况下,如何确认C是a的后代

register(B);
register(C);

register(obj) {
  // I need this test, but without the new call
  if (!new obj() instanceof A) {
     throw Error "Not a child";
  }
  ...
}

背景:我正在尝试创建一个模块化工厂方法,它可以自动实例化正确子类型的对象,而无需对列表进行硬编码。我使用一个“静态寄存器(obj)”方法来实现这一点,该方法是从定义子类的模块文件中调用的。这允许根应用程序导入任何必需的库,而模块本身不知道可用的库。作为额外的健全性检查,我想在将该类添加到列表之前确保该类实际上是一个后代。

您不需要实例化,访问可能的子类的
。prototype
将起作用:

class A{}
类B扩展了{}
类C扩展了B{}

console.log(C.prototype instanceof A)
您不需要实例化,访问可能的子对象的
。prototype
将起作用:

class A{}
类B扩展了{}
类C扩展了B{}

console.log(C.prototype instanceof A)
非常好,谢谢。我试过.constructor,但没有想到.prototype。@Digicrat javascript继承是原型。我鼓励你多了解它,谢谢。我试过.constructor,但没有想到.prototype。@Digicrat javascript继承是原型。我敦促你多了解它