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:
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.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:
come messaggio otteniamo [object Window] che conferma le aspettative.codice:function InitTest() { this.init=function() { alert(this.toString()); }; } var obj = new InitTest(); Core.start(obj);
La soluzione trovata 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.codice:function InitTest(s) { var saluto=s; this.init=function() { alert(saluto); }; } var obj = new InitTest("lunga vita e prosperità"); Core.start(obj);

Rispondi quotando