具有像这样或类似的多层次继承结构:
class Abstract {};
class Concrete extends Abstract {};
class MoreSpecificConcrete extends Concrete {};
class EvenMoreSpecificConcrete extends MoreSpecificConcrete {};
我想知道 EvenMoreSpecificConcrete
继承自 Function
之前的最后一个类。
最佳答案
您可以递归地遍历原型(prototype)链,检查您是否以 Function 原型(prototype)(每个 Function 都扩展)结束并返回在此之前的最后一个元素。
function getBaseClass(MaybeClass) {
if (typeof MaybeClass !== 'function') return;
const Proto = Reflect.getPrototypeOf(MaybeClass);
return (Proto === Function.prototype || Proto === null)
? MaybeClass
: getBaseClass(Proto);
}
然后您可以将返回的类与摘要进行比较:
getBaseClass(EvenMoreSpecificConcrete) === Abstract;
fiddle :https://jsfiddle.net/9nLuvyob/
关于javascript - 如何在不创建实例的情况下获取类扩展的第一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58421672/