Visualizzazione dei risultati da 1 a 7 su 7

Discussione: ottenere nome classe

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125

    ottenere nome classe

    ciao.
    ho creato delle classi....
    come posso risalire al tipo di classe dagli oggetti che creo?

    tipo... ho la classe animali, persone e cose

    creo un oggetto per ognuna di queste classi...

    vorrei che dato l'oggetto mi venisse detto se e' animale, persona o cosa....

    ho provato con getClass...,ma nulla

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    up

  3. #3
    perchè non ti crei un metodo della classe che ti ritorna il tipo?
    «Non esiste mondo fuor dalle mura di Verona; ma solo purgatorio, tortura, inferno. Chi è bandito di qui, è bandito dal mondo e l'esilio dal mondo è morte...»
    - William Shakespeare -

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    si ...vero...ma la mia era una curiosita...in java, in delphi e altri linguaggi si puo fare...volevo sapere come fare in javascript

  5. #5
    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);
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    ooooh....questa e' una bella risposta.
    Grazie mille.

  7. #7
    di nulla ... e a titolo informativo, ho appena postato sul mio blog due alternative php like a typeof e instance of, ovvero le funzioni get_class (quella che forse serve a te) e is_a, per essere certi al 100% che la variabile sia quella classe.
    http://webreflection.blogspot.com/20...functions.html

    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.