Obter o nome da class pai do filho com o ES6?

Eu gostaria de obter o nome da class pai ( Parent ), mas eu só sou capaz de recuperar o nome da class filho com este código ( Child ) …

 'use strict'; class Parent { } class Child extends Parent { } var instance = new Child(); console.log(instance.constructor.name); 

É possível ?

Obrigado !

As classs do ES6 herdam umas das outras. Portanto, quando instance.constructor se refere ao Child , você pode usar Object.getPrototypeOf (instance.constructor) para obter o Parent e, em seguida, acessar .name :

 Object.getPrototypeOf(instance.constructor).name == "Parent"; 

Obviamente, o cumprimento total do ES6 e o ​​código não minificado são necessários para que isso funcione. Você nunca deve confiar em nomes de function no código.

Aqui está algo divertido:

 class J {} class K extends J {} class L extends K {} function getBaseClass(targetClass){ if(targetClass instanceof Function){ let baseClass = targetClass; while (baseClass){ const newBaseClass = Object.getPrototypeOf(baseClass); if(newBaseClass && newBaseClass !== Object && newBaseClass.name){ baseClass = newBaseClass; }else{ break; } } return baseClass; } } console.log(getBaseClass(L)); // Will return J. 

Você pode tecnicamente fazer

 // instanceProto === Child.prototype var instanceProto = Object.getPrototypeOf(instance); // parentProto === Parent.prototype var parentProto = Object.getPrototypeOf(instanceProto); console.log(parentProto.constructor.name); 

Tenha em mente que esses nomes fazem com que todos sejam mutilados por minificadores.