Le parole chiave get e set
Fa parte della sezione Programmazione orientata agli oggetti del percorso JavaScript di Coddy. Lezione 43 di 56.
I getter e i setter sono metodi speciali che sembrano proprietà, ma in realtà sono funzioni. Ti danno controllo su come si accede alle proprietà e su come vengono modificate.
Creiamo una semplice classe Person:
class Person {
constructor(firstName, lastName) {
this._firstName = firstName;
this._lastName = lastName;
}
// Metodo getter per fullName
get fullName() {
return `${this._firstName} ${this._lastName}`;
}
// Metodo setter per fullName
set fullName(value) {
const parts = value.split(' ');
this._firstName = parts[0];
this._lastName = parts[1];
}
}Ora possiamo usare questi getter e setter come proprietà:
// Crea un nuovo Person
const person = new Person('John', 'Doe');
// Usa il getter
console.log(person.fullName); // Output: John Doe
// Usa il setter
person.fullName = 'Jane Smith';
// Il setter ha aggiornato le proprietà interne
console.log(person.fullName); // Output: Jane SmithNota che non chiamiamo questi metodi con le parentesi. Si comportano proprio come proprietà, ma eseguono codice quando vengono consultati o modificati.
Sfida
Ti viene fornita una classe User con una proprietà age. Il tuo compito è aggiungere un getter e un setter per age che:
- Getter
<strong>get age()</strong>: restituisca l’età memorizzata - Setter
<strong>set age(newAge)</strong>: verifichi che l’età sia compresa tra 0 e 120- Se valida (0-120): memorizzala in
this._age - Se non valida: non modificarla e registra
"Invalid age!"
- Se valida (0-120): memorizzala in
Provalo tu
import { User } from './user.js';
// Codice di test - non modificare
const user = new User("Alice", 25);
console.log(user.age); // Dovrebbe stampare 25
user.age = 30;
console.log(user.age); // Dovrebbe stampare 30
user.age = 150; // Dovrebbe mostrare "Invalid age!"
console.log(user.age); // Dovrebbe stampare ancora 30 (invariato)
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Oggetti e la keyword this
Ripasso rapido: oggettiAggiungere metodi agli oggettiCapire la keyword thisFunzioni costruttriciLa keyword newSfida di ripasso7Ereditarietà e parola chiave extends
EreditarietàLa relazione «è un»La parola chiave extendsIl metodo super()Ereditare proprietà e metodiSfida di ripasso13Composizione vs. ereditarietà
«Ha-un» vs. «è-un»I limiti dell’ereditarietà profondaCostruire oggetti2Organizzare il codice
Cosa sono i moduli?Esportare con exportImportare con importExport predefiniti vs. export nominati5Incapsulamento e accesso
IncapsulamentoCampi di classe pubblici e privatiMetodi privatiSfida di riepilogo8Organizzare il codice OOP
Organizzare le classi in moduli11Progetto: Un renderizzatore di forme
Configurazione: classe Shape ed esportazioneEreditarietà della classe CircleOverride e metodo areaContatore statico di Shape14Sistema di gestione della biblioteca
Progettare la bibliotecaClasse Book con composizioneValidazione dell'autore del libro9Metodi e proprietà statici
A livello di classe o di istanzaProprietà staticheMetodi statici di utilitàSfida di riepilogo12Getter e Setter
Le parole chiave get e setProprietà calcolateValidazione ed effetti collateraliSfida di riepilogoEsercitati da solo: Compilatore JavaScript online