Core.start(), init(), var, passaggio di parametri

  • Creatore Discussione Creatore Discussione pippusx
  • Data di inizio Data di inizio

pippusx

Nuovo Utente
9 Feb 2013
1
0
0
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 a Core.start()?
Vediamo il primo esempio in cui si crea prima un costruttore e poi si istanza 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 che ho trovato 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.
 

Discussioni simili