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:
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:
come messaggio otteniamo [object Window] che conferma le aspettative.
La soluzione che ho trovato usa la dichiarazione con "var" di una variabile "privata":
il risultato questa volta è il messaggio "lunga vita e prosperità" ma non ho capito perché funziona, vi ringrazio anticipatamente per il vostro aiuto.
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);
Viene confermato dal seguente test:
Codice:
function InitTest()
{
this.init=function()
{
alert(this.toString());
};
}
var obj = new InitTest();
Core.start(obj);
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);