考虑以下ES6(由Babel编译):
class A {};
class B extends A {};
...
function isAnA(func) {
// Return true if func will produce an A or subclass of A (e.g. B).
}
...
isAnA(B); // should return true
在不创建isAnA()
实例的情况下,将func
编码为有效的有效方法是什么?
is-class
要求在函数上运行toString()
,这似乎很笨拙。
有更好的方法吗?
答案 0 :(得分:2)
检查B类的prototype
对象。
function isAnA(func) {
return func.prototype instanceof A;
}
class A {}
class B extends A{}
class C extends B{}
function isAnA(func) {
return func.prototype instanceof A;
}
console.log(`B ? `,isAnA(B))
console.log(`C ? `,isAnA(C))