Ottieni il nome della class genitore da bambino con ES6?

Vorrei ottenere il nome della class genitore ( Parent ), ma sono solo in grado di recuperare il nome della class figlio con questo codice (Figlio) …

È ansible ?

Grazie !

Le classi ES6 si ereditano l’una dall’altra. Pertanto, quando instance.constructor fa riferimento a Child , puoi utilizzare Object.getPrototypeOf (instance.constructor) per ottenere il Parent e quindi accedere a .name :

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

Ovviamente, la piena conformità ES6 e il codice non minorato sono necessari per far funzionare tutto questo. Non dovresti mai fare affidamento sui nomi di funzioni nel codice.

Ecco qualcosa di divertente:

 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. 

Potresti tecnicamente farlo

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

tieni presente che questi nomi fanno sì che tutti vengano ridotti dai minificatori.