A differenza dei metodi delle stringhe, dei metodi dei numeri e dei metodi degli array, gli oggetti non hanno metodi predefiniti. Invece, i metodi possono essere creati manualmente. Vediamo come creare e utilizzare i metodi degli oggetti e come funziona la proprietà this
.
Funzioni
In JavaScript, le funzioni sono dei blocchi che contengono delle istruzioni. Ad esempio, questa è una funzione che esegue un alert
:
function() {
alert("Ciao");
};
Nota: vedremo le funzioni in dettaglio nella lezione delle funzioni.
Funzioni all'interno di un oggetto
Come abbiamo visto nella lezione sugli oggetti, in un oggetto si possono inserire anche le funzioni. Per inserirle, basta utilizzare la sintassi delle funzioni:
let macchina = {
marca: "Fiat",
alert: function() { alert("Targa:GA010AA"); }
};
Metodi degli oggetti
Abbiamo visto come inserire una funzione all'interno di un oggetto. In questo modo, abbiamo creato un metodo. Ora, possiamo utilizzarlo (e quindi attivare la funzione) con la sintassi oggetto.
proprietà()
.
let macchina = {
marca: "Fiat",
alert: function() { alert("Targa:GA010AA"); }
};
macchina.alert(); // Risultato nell'alert: "Targa:GA010AA"
Possiamo anche creare un oggetto vuoto e aggiungere in seguito il metodo:
let macchina = { }
macchina.marca = "Fiat",
macchina.alert = function() { alert("Targa:GA010AA"); }
macchina.alert(); // Risultato nell'alert: "Targa:GA010AA"
Parola chiave this
this
è una delle parole chiave più utilizzate in JavaScript. Questa parola può sottintendere il nome dell'oggetto in cui si trova. Ad esempio, se utilizziamo this
all'interno dell'oggetto macchina
, sottintenderà proprio macchina
.
let macchina = {
marca: "Fiat",
alert: function() { alert(this.marca); } // Si sottintende macchina.marca
};
macchina.alert(); // Risultato: "Fiat"
Come hai visto, la sintassi di this
rimane la stessa degli oggetti: this.
proprietà.
Esempio di utilizzo
Ma a cosa serve this
nella realtà? Bhe, vediamo un esempio: chiediamo all'utente di inserire tramite prompt
(che abbiamo visto nella lezione Prompt di stringhe e numeri) un dato all'interno di un oggetto. In particolare, il proprio nome. Poi, per visualizzarlo, aggiungiamo la funzione. Tuttavia, questa funzione viene aggiunta anche in altri oggetti con nome diverso. Quindi, il nome dell'oggetto non lo conosciamo.
let nome = prompt("Inserisci il tuo nome:");
let persona = { };
persona.nome = nome;
persona.alert = function() { alert(this.nome); };
persona.alert();
// Aggiungiamo la funzione in altri oggetti
persona1.alert = function() { alert(this.nome); };