Sobes.tech
Junior

Ako volať metódu v reťazci volaní?

sobes.tech AI

Odpoveď od AI

Použite bodku (.) medzi volaniami metód alebo vlastnosťami objektu. Každé volanie metódy alebo prístup k vlastnosti vráti objekt, na ktorom môžete následne volať ďalšiu metódu alebo získať ďalšiu vlastnosť.

// Príklad reťazca volaní metód
" abc ".trim().toUpperCase().split(" ");

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

// Príklad reťazca s prístupom k vlastnosti
const user = {
  address: {
    city: "Moskov"
  }
};

user.address.city; // "Moskov"

// Príklad s použitím voliteľného reťazenia (?.)
// Umožňuje bezpečný prístup k vlastnostiam vnornených objektov,
// a zabraňuje chybám, ak je niektorá z medzivýznamových vlastností null alebo undefined.
user.address?.street; // undefined, bez chyby

const anotherUser = {};
anotherUser.address?.city; // undefined, bez chyby

Pri navrhovaní vlastných metód na podporu reťazenia by každá metóda mala vracať this (odkaz na aktuálny objekt), okrem poslednej metódy v reťazci, ktorá môže vracať konečný výsledok.

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

  addText(text) {
    this.value += text;
    return this; // Vráti this
  }

  addNumber(number) {
    this.value += number;
    return this; // Vráti this
  }

  build() {
    return this.value; // Vráti konečný výsledok
  }
}

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