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 № 1Il 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)) ...