Вы можете рекурсивно пройти проверку цепочки прототипов, если оказались в прототипе функции (который расширяет каждая функция), и вернуть последний элемент перед этим.
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;
Скрипка: https://jsfiddle.net/9nLuvyob/