/ / Idiomatický vzťah podtriedy pre ES6 [duplikát] - dedičnosť, ecmascript-6, instanceof

Idiomatický vzťah podtried pre ES6 [duplikát] - dedičnosť, ecmascript-6, instanceof

Podľa ES6 som dostal hierarchiu dedičstva

class A {}
class B extends A {}

Hľadám analógový instanceof pre dedičné triedy, napr.

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.

Neviem o ničom podobnom extensionof v ES6. Moje najlepšie je X === A || X.prototype instanceof A pre vzťah "rovnaká alebo podtrieda" alebo X.prototype instanceof A pre vzťah „podtrieda“. Chýba mi niečo krajšie?

odpovede:

1 pre odpoveď č. 1

Najjednoduchší spôsob by pravdepodobne bol

if (B.prototype instanceof A) ...

Ak by ste chceli, môžete vykonať funkciu

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

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

@loganfsmyth uvádza iné riešenie, ktoré by fungovalo

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