/ / Идиоматично отношение на подклас за ES6 [дубликат] - наследяване, ecmascript-6, instanceof

Идиоматична връзка на подклас за ES6 [дубликат] - наследство, ecmascript-6, instanceof

Под ES6 имам йерархия на наследството

class A {}
class B extends A {}

Търся аналог instanceof за наследени класове, напр.

const X = B;

if (X extensionof A) {
console.log("X derives from A");
} else {
console.log(":(");
}
// I wish that this would log: "X derives from A",
// but `extensionof` is a syntax error.

Не знам нищо подобно extensionof в ES6. Най-добре е X === A || X.prototype instanceof A за връзка "равен или подклас" или X.prototype instanceof A за отношение "подклас на". Липсва ли нещо по-хубаво?

Отговори:

1 за отговор № 1

Най-лесният начин вероятно ще бъде

if (B.prototype instanceof A) ...

Можете да направите функция, ако искате

function extensionOf(superClass, subClass) {
return subClass.prototype instanceof superClass;
}

if (extensionOf(A, B)) ...

@loganfsmyth споменава друго решение, което също ще работи

if (A.isPrototypeOf(B)) ...