/ / Relazione sottoclasse Idiomatic per ES6 [duplicato] - ereditarietà, ecmascript-6, instanceof

Relazione sottoclasse idiomatica per ES6 [duplicato] - ereditarietà, ecmascript-6, instanceof

Sotto ES6, ho una gerarchia ereditaria

class A {}
class B extends A {}

Sto cercando un analogo a instanceof per le classi ereditate, ad es.

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.

Non so nulla di simile extensionof in ES6. Il mio meglio è X === A || X.prototype instanceof A per una relazione "uguale o sottoclasse di" o X.prototype instanceof A per una relazione "sottoclasse-di". Mi sto perdendo qualcosa di più carino?

risposte:

1 per risposta № 1

Il modo più semplice sarebbe probabilmente

if (B.prototype instanceof A) ...

Potresti fare una funzione se lo volessi

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

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

@loganfsmyth cita un'altra soluzione che funzionerebbe anche

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