Il metodo scrivi appartiene a questo oggetto.
Agisce da dentro questo oggetto.
Ora gli faccio leggere delle variabili pubbliche dell'oggetto e poi delle variabili private.
Variabili pubbliche:
<script>
function oggetto(nome, cognome){
this.nome=nome;
this.cognome=cognome;
this.scrivi = function(){
alert(nome+" "+cognome);
}
}
function azione(){
Mario=new oggetto("Mario", "Rossi");
Mario.scrivi();
}
</script>
<body onLoad="azione();">
</body>
Ho stabilito la convenzione di marcare le variabili pubbliche in verde.L'output è una casella di avviso con scritto "Mario Rossi".
Conclusione: il metodo legge le variabili pubbliche dello stesso oggetto(è lapalissiano).
Ora leggo le variabili pubbliche da una funzione esterna all'oggetto:
<script>
function oggetto(nome, cognome){
this.nome=nome;
this.cognome=cognome;
this.scrivi = function(){
alert(nome+" "+cognome);
}
}
function azione(){
Mario=new oggetto("Mario", "Rossi");
alert(Mario.nome+" "+Mario.cognome);
}
</script>
<body onLoad="azione();">
</body>
Output: "Mario Rossi".Conclusione: la funzione esterna legge le variabili pubbliche di un oggetto.
Ora ripeto l'esperimento con variabili private (che per convenzione segno in rosso)
<script>
function oggetto(nome, cognome){
var nome=nome;
var cognome=cognome;
this.scrivi = function(){
alert(nome+" "+cognome);
}
}
function azione(){
Mario=new oggetto("Mario", "Rossi");
Mario.scrivi();
}
</script>
<body onLoad="azione();">
</body>
Output: "Mario Rossi".Conclusione: il metodo legge le variabili private dello stesso oggetto..
Ora cerco di leggere le variabili private da una funzione esterna:
<script>
function oggetto(nome, cognome){
var nome=nome;
var cognome=cognome;
this.scrivi = function(){
alert(nome+" "+cognome);
}
}
function azione(){
Mario=new oggetto("Mario", "Rossi");
alert(Mario.nome+" "+Mario.cognome);
}
</script>
<body onLoad="azione();">
</body>
Output: "undefined undefined".
Conclusione: la funzione esterna non legge le variabili private di un oggetto.
Tutto lapalissiano, del resto, ma è bene allenarsi!
Nessun commento:
Posta un commento