JavascriptProva

martedì 14 febbraio 2012

Partiamo dalle basi sull'ereditarietà in Javascript...

Cerchiamo di fare ordine e capire bene queste maledette ereditarietà...

Cominciamo dal Javascript...

Scrivo questo:
<script>
function funzione(){
 var variabile=0;
}
document.write(funzione.variabile);
</script>
Output:
undefined



Dal di fuori non posso vedere una variabile dichiarata con var all'interno di una funzione.
Scrivo questo:
<script>
function funzione(){
 var variabile=0;
}

var miaFunzione=new funzione();

document.write(miaFunzione.variabile);
</script>
Ottengo sempre:
undefined

ho creato una nuova istanza di funzione ma anche per questa istanza non posso accedere alla variabile dichiarata con var all'interno della funzione.
Se scrivo così:
<script>
function funzione(){
 var variabile=0;
 var dichiara=function(){
  document.write(variabile);
 }
}
funzione.dichiara();
</script>


o così:
<script>
function funzione(){
 var variabile=0;
 var dichiara=function(){
  document.write(variabile);
 }
}
var miaFunzione=new funzione();

miaFunzione.dichiara();
</script>
Output:


...tentando di accedere dall'esterno a un metodo dichiarato con var all'interno della funzione o di una sua istanza, non ottengo niente, in quanto non si può accedere dall'esterno a un metodo privato di una funzione o di una sua istanza.
Queste le premesse prime.

Ora introduciamo il this.
<script>
function funzione(){
 this.variabile=0;
}
document.write(funzione.variabile);
</script>
ottengo:
undefined



Se scrivo questo:
<script>
function funzione(){
 this.variabile=0;
}
var miaFunzione=new funzione();
document.write(miaFunzione.variabile);
</script>
ottengo:
0

Il this non è dunque un modo per rendere pubblici i membri di una funzione.

Proviamo con un metodo:
<script>
function funzione(){
 this.variabile=0;
 this.dichiara=function(){
  document.write(this.variabile);
 }
}
funzione.dichiara();
</script>
Ora creo l'istanza:
<script>
function funzione(){
 this.variabile=0;
 this.dichiara=function(){
  document.write(this.variabile);
 }
}
miaFunzione=new funzione();
miaFunzione.dichiara();
</script>
E ottengo:
0


No, il this non è un modo per rendere pubblici i membri di una funzione...

Nessun commento:

Posta un commento