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