JavascriptProva

sabato 21 gennaio 2012

Funzioni-"prostituta" senza il call...

Proseguiamo seguendo pedissequamente gli esempi del corso online.
<script type="text/javascript">
 
var stampaNome = function() {
  alert(this.nome || "Non ho nessun nome");
}
 
var persona = {
  nome: "Alberto",
  stampaNome: stampaNome
}
 
var animale = {
  razza: "Pastore tedesco",
  stampaNome: stampaNome
}
 
persona.stampaNome();
animale.stampaNome();
 
</script> 
Qui mi scontro con una novità: quel ||.
Proviamo ad eliminarlo.
<script type="text/javascript">
 
var stampaNome = function() {
  alert(this.nome);
}
 
var persona = {
  nome: "Alberto",
  stampaNome: stampaNome
}
 
var animale = {
  razza: "Pastore tedesco",
  stampaNome: stampaNome
}
 
persona.stampaNome();
animale.stampaNome();
 
</script> 
Nel primo caso gli output sono Alberto e non ho nessun nome.
Nel secondo sono Alberto e undefined.
Quell'operatore di "o", ||, permette di dare una risposta alternativa all'undefined.

Appurato questo, e imparata una nuova tecnica, analizziamo lo scope.

Una funzione può essere condivisa da più oggetti e "calarsi" nello scope di ognuno.

Vediamo meglio personalizzando:
<script type="text/javascript">
 
var stampaNome = function() {
   alert(this.nome);
}
 
var persona = {
   nome: "Alberto",
   stampaNome: stampaNome
}
 
var animale = {
 nome: "Rex",
   razza: "Pastore tedesco",
   stampaNome: stampaNome
}
 
persona.stampaNome();
animale.stampaNome();
 
</script> 
Output: Alberto e Rex.

Che differenza c'è fra il condividere una funzione così e l'uso del call?

Nessun commento:

Posta un commento