Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Reperire il nome di istanza di un oggetto

    Ciao a tutti, una curiosità,
    è possibile dato:

    codice:
    function MyFunction(){
       ...
    }
    
    myInstance=new MyFunction();
    reperire da codice la stringa "myInstance" in qualche modo?
    Ci sto provando in tutte le maniere, ma non riesco...

    In pratica mi servirebbe per richiamare un metodo di quella certa istanza tramite eval().

    Tu non vedrai nessuna cosa
    al mondo
    maggior di Roma...
    Io su Flashkit.com

  2. #2
    Anche se fosse un pò cervellotico sarebbe la stessa cosa! Comunque mi serve...
    Ancora meglio sarebbe poter reperire tale stringa direttamente all'interno del costruttore
    Tu non vedrai nessuna cosa
    al mondo
    maggior di Roma...
    Io su Flashkit.com

  3. #3
    Mi rispondo ancora da solo

    Mi dispiace che nessuno si sia interessato a questa cosa... secondo me l'argomento potrebbe tornare utile.

    Comunque io una soluzione l'ho trovata anche se per quello che serviva a me ho trovato un'altra soluzione anche più efficiente di quella che avevo pensato in prima battuta.

    codice:
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>getName()</title>
    <script type="text/javascript">
    <!--
    function Listener(){
    	var myCaller=this.constructor.caller;
    	this.getCaller=function(){
    		return myCaller;
    	}
    }
    
    window.getName=function(listener){
    	var splitters= /[ \t()\{\}\.;\[\]\r\n:='",]/
    	var arrayNames=listener.getCaller().toString().split(splitters);
    	for(var a in arrayNames){
    		try{
    			if(eval(arrayNames[a])===listener) {
    				return arrayNames[a];
    			}
    		}catch(e){}
    	}
    }
    
    window.onload=function()
    {
    	var1 = new Listener();
    	var2 = new Listener();
    	alert("MYNAME IS: "+getName(var1));
    	alert("MYNAME IS: "+getName(var2));
    }
    -->
    </script>
    </head>
    
    <body>
    </body>
    </html>
    Gli utilizzi possibili sono molteplici, ad esempio utilizzare i nomi di istanza per richiamare metodi dinamicamente col setTimeout() o col setInterval o ancora con eval.. ma al di là di questo mi era venuta questa curiosità e volevo condividerla con qualcuno!

    Naturalmente si può discutere insieme una soluzione alternativa

    Tu non vedrai nessuna cosa
    al mondo
    maggior di Roma...
    Io su Flashkit.com

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 © 2025 vBulletin Solutions, Inc. All rights reserved.