Comme cela a déjà été répondu, je voulais juste souligner les différences d'approche pour obtenir le constructeur d'un objet en JavaScript. Il existe une différence entre le constructeur et le nom réel de l'objet / classe. Si ce qui suit ajoute à la complexité de votre décision, alors peut-être que vous recherchez instanceof. Ou peut-être que vous devriez vous demander "Pourquoi est-ce que je fais ça? Est-ce vraiment ce que j'essaie de résoudre?"
Remarques:
Le obj.constructor.namen'est pas disponible sur les anciens navigateurs. La correspondance (\w+)doit satisfaire les classes de style ES6.
Code:
var what = function(obj) {
return obj.toString().match(/ (\w+)/)[1];
};
var p;
// Normal obj with constructor.
function Entity() {}
p = new Entity();
console.log("constructor:", what(p.constructor), "name:", p.constructor.name , "class:", what(p));
// Obj with prototype overriden.
function Player() { console.warn('Player constructor called.'); }
Player.prototype = new Entity();
p = new Player();
console.log("constructor:", what(p.constructor), "name:", p.constructor.name, "class:", what(p));
// Obj with constructor property overriden.
function OtherPlayer() { console.warn('OtherPlayer constructor called.'); }
OtherPlayer.constructor = new Player();
p = new OtherPlayer();
console.log("constructor:", what(p.constructor), "name:", p.constructor.name, "class:", what(p));
// Anonymous function obj.
p = new Function("");
console.log("constructor:", what(p.constructor), "name:", p.constructor.name, "class:", what(p));
// No constructor here.
p = {};
console.log("constructor:", what(p.constructor), "name:", p.constructor.name, "class:", what(p));
// ES6 class.
class NPC {
constructor() {
}
}
p = new NPC();
console.log("constructor:", what(p.constructor), "name:", p.constructor.name , "class:", what(p));
// ES6 class extended
class Boss extends NPC {
constructor() {
super();
}
}
p = new Boss();
console.log("constructor:", what(p.constructor), "name:", p.constructor.name , "class:", what(p));
Résultat:

Code: https://jsbin.com/wikiji/edit?js,console