<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