Sobes.tech
Junior

Come chiamare un metodo in una catena di chiamate?

sobes.tech AI

Risposta dell'AI

Utilizzare un punto (.) tra le chiamate di metodi o le proprietà di un oggetto. Ogni chiamata di metodo o accesso a proprietà restituisce un oggetto, sul quale è possibile chiamare il metodo successivo o accedere alla proprietà successiva.

// Esempio di catena di chiamate di metodi
" abc ".trim().toUpperCase().split(" ");

/*  
   1. " abc ".trim()  -> "abc"  
   2. "abc".toUpperCase() -> "ABC"  
   3. "ABC".split(" ") -> ["ABC"]  
*/

// Esempio di catena con accesso a proprietà
const user = {
  address: {
    city: "Mosca"
  }
};

user.address.city; // "Mosca"

// Esempio con utilizzo di chaining opzionale (?.)
// Permette di accedere in modo sicuro alle proprietà di oggetti annidati,
// prevenendo errori se una delle proprietà intermedie è null o undefined.
user.address?.street; // undefined, senza errore

const anotherUser = {};
anotherUser.address?.city; // undefined, senza errore

Progettando i propri metodi per supportare il chaining, ogni metodo dovrebbe restituire this (un riferimento all'oggetto corrente), tranne l'ultimo metodo nella catena, che può restituire il risultato finale.

class Builder {
  constructor() {
    this.value = "";
  }

  addText(text) {
    this.value += text;
    return this; // Restituisce this
  }

  addNumber(number) {
    this.value += number;
    return this; // Restituisce this
  }

  build() {
    return this.value; // Restituisce il risultato finale
  }
}

const result = new Builder().addText("Hello").addNumber(123).build();
console.log(result); // "Hello123"