if(objvar instanceof Animali)
alert("objvar è classe Animali");
else if(objvar instanceof Persone)
alert("objvar è classe Persone");
ci sono metodi più sporchi basati sul parsing della funzione (intesa come stringa) ...
codice:
function Pippo(){};
var objvar = new Pippo();
var nomeClasse = "".concat(objvar.constructor).replace(/^.*function\s+([^\s]+|[^\(]+)\([^\x00]+$/, "$1");
document.write(nomeClasse);
... o qualcosa del genere, dovrebbe darti il nome del costruttore nella maggior parte dei casi (dipende da come è stato creata la classe)
quella che preferisco è su switch del costruttore
codice:
function Pippo(){};
function Pluto(){};
var pi = new Pippo;
var pl = new Pluto;
switch(pl.constructor) {
case Pluto:
document.write("Pluto");
break;
case Pippo:
document.write("Pippo");
break;
default:
document.write("Object");
break;
};
se hai un numero finito di classi vai sul sicuro
[edit]
riguardo il parsing del nome ... in alcuni casi non è detto sia semplice trovarlo (costruttore anonimo) ... quindi di solito è meglio fare così
codice:
var objvar = new function(){};
var nome = "".concat(objvar.constructor).replace(/^.*function\s+([^\s]*|[^\(]*)\([^\x00]+$/, "$1") || "anonymous";
alert(nome);