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 