JavascriptProva

venerdì 20 gennaio 2012

Continuano gli esercizi di scope (il trionfo di La Palisse!)

Ora il mio problema è che voglio che una funzione esterna all'oggetto chiami una funzione interna...

Procediamo con ordine...

Una funzione pubblica (metodo) di un oggetto ne chiama un'altra pubblica.
<script>

function oggetto(nome, cognome){
 var nome=nome;
 var cognome=cognome;
 this.scrivi = function(){
  alert(nome+" "+cognome);
 }
 this.chiamaScrivi=function(){
  this.scrivi();
 }
}

function azione(){
 Mario=new oggetto("Mario", "Rossi");
 Mario.chiamaScrivi();
}
</script>
<body onLoad="azione();">
</body>
Output: "Mario Rossi".
Conclusione: una funzione dell'oggetto può chiamare (lapalissianamente) una funzione pubblica dello stesso oggetto
Una funzione esterna chiama una funzione pubblica di un oggetto:
<script>

function oggetto(nome, cognome){
 var nome=nome;
 var cognome=cognome;
 this.scrivi = function(){
  alert(nome+" "+cognome);
 }
 this.chiamaScrivi=function(){
  this.scrivi();
 }
}

function azione(){
 Mario=new oggetto("Mario", "Rossi");
 Mario.scrivi();
}
</script>
<body onLoad="azione();">
</body>
(che poi è la stessa cosa di prima)
Output: "Mario Rossi". Conclusione: una funzione esterna può chiamare (ancora lapalissianamente) una funzione pubblica di un oggetto.
Una funzione interna all'oggetto ne chiama una privata dello stesso oggetto:
<script>

function oggetto(nome, cognome){
 var nome=nome;
 var cognome=cognome;
 var scrivi = function(){
  alert(nome+" "+cognome);
 }
 this.chiamaScrivi=function(){
  scrivi();
 }
}

function azione(){
 Mario=new oggetto("Mario", "Rossi");
 Mario.chiamaScrivi();
}
</script>
<body onLoad="azione();">
</body>
Output: "Mario Rossi".
Conclusione: un metodo può chiamare un metodo privato all'interno di un oggetto
Una funzione esterna all'oggetto chiama una funzione privata dell'oggetto.
<script>

function oggetto(nome, cognome){
 var nome=nome;
 var cognome=cognome;
 var scrivi = function(){
  alert(nome+" "+cognome);
 }
 this.chiamaScrivi=function(){
  scrivi();
 }
}

function azione(){
 Mario=new oggetto("Mario", "Rossi");
 Mario.scrivi();
}
</script>
<body onLoad="azione();">
</body>
Bene: ottengo una pagina bianca senza spiegazioni!
In Internet Explorer ottengo un errore del tipo Proprietà o metodo non supportati dall'oggetto.
Conclusione: una funzione esterna non può chiamare un metodo privato di un oggetto

Tutto tremendamente lapalissiano...

Nessun commento:

Posta un commento