Como este ya fue respondida, solo quería señalar las diferencias en los enfoques para obtener el constructor de un objeto en JavaScript. Hay una diferencia entre el constructor y el nombre real del objeto/clase. Si lo siguiente se suma a la complejidad de su decisión, entonces tal vez esté buscando instanceof
. O tal vez deberías preguntarte "¿Por qué estoy haciendo esto? ¿Esto es realmente lo que trato de resolver?"
Notas:
El obj.constructor.name
no está disponible en los navegadores antiguos. Coincidencia (\w+)
debe satisfacer las clases de estilo ES6.
Código:
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));
Resultado:
Código: https://jsbin.com/wikiji/edit?js,console
Es posible que desee ver esto: http://stackoverflow.com/questions/789675/how-to-get-class-objects-name-as-a-string-in-javascript –
parece correcto! Muchas gracias. ¡Intentaré esto! – TJR