Un saluto a tutti, premetto che sto lavorando con javascript da meno di tre settimane ma mi sono imbattuto nel seguente problema: come posso passare valori al metodo init() di un mio ipotetico oggetto obj che passerò come argomento?
Vediamo il primo esempio in cui si crea prima un costruttore e poi si istanzia un oggetto:
codice:
function InitTest(saluto) 
{ 
    this.saluto=saluto; 
    this.init=function() 
    { 
       alert(this.saluto); 
    }; 
} 

var obj = new InitTest("lunga vita e prosperità"); 
Core.start(obj);
il risultato, che un poco mi attendevo, è "undefined", questo presumo derivi dal fatto che la funzione init() ( metodo) viene eseguita come "listener" per l'oggetto "window" sull'evento "load" e quindi il "this" di "this.saluto" si riferisce a window.
Viene confermato dal seguente test:
codice:
function InitTest() 
{ 
   this.init=function() 
   { 
      alert(this.toString()); 
    }; 
} 
var obj = new InitTest(); 
Core.start(obj);
come messaggio otteniamo [object Window] che conferma le aspettative.
La soluzione trovata usa la dichiarazione con "var" di una variabile privata:

codice:
function InitTest(s) 
{ 
   var saluto=s; 
   this.init=function() 
   { 
       alert(saluto); 
    }; 
} 
var obj = new InitTest("lunga vita e prosperità"); 
Core.start(obj);
il risultato questa volta è il messaggio "lunga vita e prosperità" ma non ho capito perchè funziona, vi ringrazio anticipatamente per il vostro aiuto.