Menu
Coddy logo textTech

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 Smith

Nota che non chiamiamo questi metodi con le parentesi. Si comportano proprio come proprietà, ma eseguono codice quando vengono consultati o modificati.

challenge icon

Sfida

Ti viene fornita una classe User con una proprietà age. Il tuo compito è aggiungere un getter e un setter per age che:

  1. Getter <strong>get age()</strong>: restituisca l’età memorizzata
  2. 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!"

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)

quiz iconMettiti alla prova

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

Esercitati da solo: Compilatore JavaScript online