Comment vérifier si un Javascript Classe hérite d'une autre (sans la création d'un obj)?
Par exemple:
function A(){}
function B(){}
B.prototype = new A();
Comment puis-je vérifier si la classe B hérite de la classe A?
Vous devez vous connecter pour publier un commentaire.
donner à ceci un essai
B.prototype instanceof A
class
?class A extends B{}
alors comment puis-je vérifier les héritages de la classeA
A.prototype
... developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...Vous pouvez tester l'héritage direct avec
De test indirect à l'héritage, vous pouvez utiliser
(cette deuxième solution a d'abord été donnée par Nirvana Tikku)
retour à 2017:
vérifier si ce travail pour vous
Pièges: Noter que
instanceof
ne fonctionne pas comme prévu si vous utilisez plusieurs contextes d'exécution/windows. Voir §§.Aussi, par https://johnresig.com/blog/objectgetprototypeof/, c'est une alternative qui est identique à
instanceof
:En le modifiant pour vérifier la classe directement nous donne:
Note
instanceof
lui-même vérifie siobj.proto
estf.prototype
, donc:et:
et:
Si ce n'est pas l'égalité, le proto est échangé avec le proto proto dans la case, puis proto proto proto, et ainsi de suite. Donc:
et:
et:
Je ne pense pas que Simon signifiait
B.prototype = new A()
dans sa question, parce que ce n'est certainement pas la voie à la chaîne de prototypes en JavaScript.En supposant que B extends A, utilisez
Object.prototype.isPrototypeOf.call(A.prototype, B.prototype)