<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