Obtenir parent nom de la classe de l'enfant avec ES6?
Je voudrais obtenir le parent nom de la classe (Parent
), mais je suis seulement en mesure de récupérer l'enfant du nom de la classe avec ce code (Child
)...
JS:
'use strict';
class Parent {
}
class Child extends Parent {
}
var instance = new Child();
console.log(instance.constructor.name);
Est-il possible ?
Merci !
- Oublié de le dire avant, mais je ne crois pas que cela soit possible. Dans votre exemple, vous pouvez vérifier si
instance
est une instance deParent
avecinstanceof
. Ce que vous pourriez faire est d'avoir votre propre étend la méthode de stocker l'arbre d'héritage sur chaque objet nouvellement créé, mais je ne suis pas sûr d'un autre moyen de le faire. - Je vais essayer de le faire comme vous l'avez dit, merci quand même pour la réponse !
- pas de problème :). Je vais faire plus de recherche parce que je suis curieux moi-même, mais je ne m'attends pas à trouver une solution élégante. Si je ne trouve rien, je vais poster ici.
- Super ! 🙂
Vous devez vous connecter pour publier un commentaire.
ES6 classes héritent les uns des autres. Alors, quand
instance.constructor
se réfère à laChild
, alors vous pouvez utiliserObjet.getPrototypeOf(instance.constructor)
pour obtenir leParent
, puis l'accès.nom
:Bien sûr, plein ES6 la conformité et la non-compacte de code sont nécessaires pour que cela fonctionne. Vous ne devez jamais compter sur les noms de fonction dans le code.
c
s'étendb
s'étenda
:). Aussi, bonne nouvelle, il y a un (très basique) ES6 violon: es6fiddle.netname
lorsque votre code est uglified.Ici est quelque chose d'amusant:
JS:
Vous pourrait techniquement faire
garder à l'esprit que ces noms peuvent tous être mutilé par minifiers.
instanceProto
.De proto propriété:
exemple ici: https://stackblitz.com/edit/typescript-s5brk9