Sobes.tech
Junior

Cum se apelează o metodă în lanțul de apeluri?

sobes.tech AI

Răspuns de la AI

Utilizați punctul (.) între apelurile de metode sau proprietățile unui obiect. Fiecare apel de metodă sau acces la proprietate returnează un obiect, pe care apoi îl puteți apela următoarea metodă sau accesa următoarea proprietate.

// Exemplu de lanț de apeluri de metode
" abc ".trim().toUpperCase().split(" ");

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

// Exemplu de lanț cu acces la proprietate
const user = {
  address: {
    city: "Moscova"
  }
};

user.address.city; // "Moscova"

// Exemplu cu utilizarea chaining-ului opțional (?.)
// Permite accesul sigur la proprietățile obiectelor imbricate,
// prevenind erorile dacă una dintre proprietățile intermediare este null sau undefined.
user.address?.street; // undefined, fără eroare

const anotherUser = {};
anotherUser.address?.city; // undefined, fără eroare

Proiectând propriile metode pentru a suporta chaining, fiecare metodă trebuie să returneze this (o referință la obiectul curent), cu excepția ultimei metode din lanț, care poate returna rezultatul final.

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

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

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

  build() {
    return this.value; // Returnează rezultatul final
  }
}

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