Da diese wurde bereits beantwortet, ich wollte nur die Unterschiede in den Ansätzen auf den Konstruktor eines Objekts in JavaScript hinweisen. Es gibt einen Unterschied zwischen dem Konstruktor und dem tatsächlichen Objekt/Klassennamen. Wenn das Folgende zur Komplexität Ihrer Entscheidung beiträgt, suchen Sie vielleicht nach instanceof
. Oder vielleicht solltest du dich selbst fragen: "Warum mache ich das? Ist das wirklich das, was ich versuche zu lösen?"
Hinweise:
Die obj.constructor.name
ist auf älteren Browsern nicht zur Verfügung. Übereinstimmende (\w+)
sollte ES6-Stilklassen erfüllen.
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
Man könnte dies sehen wollen: http://stackoverflow.com/questions/789675/how-to-get-class-objects-name-as-a-string-in-javascript –
scheint richtig! Danke vielmals. Ich werde es versuchen! – TJR