Newsgroup: it.comp.lang.javascript
Titolo: JSON

Ora una domandina rapida riguardo a JSON.
Online c'e' un articolo che illustra il seguente codice elementare:
----------------------------
var jack = {
	a : Object,
	init : function() {
		this.a = document.getElementById('jane');
		this.a.addEventListener('click',this.alerter,false);
		this.run();
	},
	run : function() {
		this.alerter();
	},
	alerter : function() {
		alert(
this.id
);
	}
}
function pageLoader() {
	jack.init();
}
window.addEventListener('load',pageLoader,false);
----------------------------
Poi, dice:
"the method alerter is being run from both an eventListener, and from
the run method. If you were to access a page with this code on it, you
would see an alert upon the window 'load' event that would read as
'undefined' - but when fired upon the 'click' event from a link with
the id of 'jane', we would indeed see an alert that read as 'jane'."
Ora, mi chiedo: il "this" che si utilizza IN TUTTO IL CODICE dovrebbe
riferirsi a "jack", no??
Mentre "this.a" dovrebbe riferirsi a "jane"...
E' corretto, fin qui?
..E allora perche', quando si fa il mouseover su "jane", l'alert dice
"jane"?
Grazie di nuovo,
Zark

 Zark
Non c'č di che. Se hai dubbi, siam qui.
-- 
~ Il lavoro č prezioso. Non essere egoista! Lascialo agli altri!

 eseguito. Nel tuo caso, jack.alerter è un riferimento a funzione, che


Heheh...
Ed ecco qui, al volo, un'altra domanda sul tema.
E' possibile gestire "jack" come se fosse una classe, e poi crearne
piu' istanze?
Cioe', qualcosa tipo:
ogg1 = new jack;
ogg2 = new jack;
ogg3 = new jack;
Mi viene in mente, per esempio, il caso di un menu costruito
dinamicamente via JS: si potrebbe definire una classe "menuItem", con
tutti i suoi metodi per il posizionamento/dimensionamento/etc, e poi
istanziarla creando tutte le voci del menu?
Zark

 "standard" dei linguaggi tipo C o Java?
No, anche perché come ti ho detto la dichiarazione in quel modo era
errata. Al più, sarebbe logicamente corretto impostarla a null.
-- 
~ "Il semble que la perfection soit atteinte non quand il n'ya plus
rien à ajouter, mais quand il n'ya plus rien à retrancher"
(A. de Saint-Exupéry)

 istanziarla creando tutte le voci del menu?
Stai attento, che rischi di complicarti la vita. :) Quando sviluppi
su client, l'approccio è molto diverso rispetto alla programmazione
canonica. 
Cmq ti consiglio di leggerti:
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide:JavaScript_Overview#What_is_JavaScript.3F
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide#Working_with_Objects
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Guide#Details_of_the_Object_Model
-- 
~ "Solo i morti hanno visto la fine della guerra."
(Platone)

 "jane"?
perche', nel momento in cui stai legando alerter ad a, dentro alerter
"this" diventa a, cioe' jane
diverso il caso di attachEvent, di cui ho avuto il piacere di discutere
qualche giorno fa, il quale causa la legatura di this a window, generando
potenzialmente parecchia confusione in codice del tipo:
if (window.attachEvent)
{
   this.a.attachEvent("onclick", yadda);
}
else if (document.addEventListener)
{
   this.a.addEventListener("click", yadda);
}
-- 
http://emeraldion.it
Perdonare non vuol dire giustificare, assolvere.
Vuol dire compatire l'altrui disgrazia.

 errata. Al piů, sarebbe logicamente corretto impostarla a null.
quoto, stavo per scrivere la medesima cosa. Giusto per "dichiarare"
(termine improprio) l'intenzione di usare un membro di tal nome.
-- 
http://emeraldion.it
I Carusi sono soliti cambiare idea allorche'
qualcuno entra a casa loro senza essere invitato