在不实例化的情况下检查 class 是否是 class 的 child
Check if class is child of class without instantiating
假设我在 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";
}
...
}
背景:我正在尝试创建一个模块化工厂方法,该方法可以自动实例化正确 child 类型的 object,而无需 hard-coding 列表。我正在使用从定义 child classes 的模块文件调用的 'static register(obj)' 方法来执行此操作。这允许根应用程序导入任何所需的库,而模块本身不知道可用的库。作为额外的完整性检查,我想确保 class 在将其添加到列表之前实际上是后代。
您不需要实例化,访问可能 child 的 .prototype
将起作用:
class A { }
class B extends A { }
class C extends B { }
console.log(C.prototype instanceof A)
假设我在 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";
}
...
}
背景:我正在尝试创建一个模块化工厂方法,该方法可以自动实例化正确 child 类型的 object,而无需 hard-coding 列表。我正在使用从定义 child classes 的模块文件调用的 'static register(obj)' 方法来执行此操作。这允许根应用程序导入任何所需的库,而模块本身不知道可用的库。作为额外的完整性检查,我想确保 class 在将其添加到列表之前实际上是后代。
您不需要实例化,访问可能 child 的 .prototype
将起作用:
class A { }
class B extends A { }
class C extends B { }
console.log(C.prototype instanceof A)