Da dies bereits beantwortet wurde, wollte ich nur auf die unterschiedlichen Ansätze beim Abrufen des Konstruktors eines Objekts in JavaScript hinweisen. Es gibt einen Unterschied zwischen dem Konstruktor und dem tatsächlichen Objekt- / Klassennamen. Wenn das Folgende die Komplexität Ihrer Entscheidung erhöht, suchen Sie vielleicht instanceof. Oder vielleicht sollten Sie sich fragen: "Warum mache ich das? Versucht ich das wirklich zu lösen?"
Anmerkungen:
Das obj.constructor.nameist in älteren Browsern nicht verfügbar. Das Matching (\w+)sollte den ES6-Stilklassen entsprechen.
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));
Ergebnis:

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