Sobes.tech
Junior

Kako pozvati metodu u lancu poziva?

sobes.tech АИ

Одговор од АИ

Koristite tačku (.) između poziva metoda ili svojstava objekta. Svaki poziv metode ili pristup svojstvu vraća objekat, na kojem zatim možete pozvati sledeći metod ili pristup sledećem svojstvu.

// Primer niza poziva metoda
" abc ".trim().toUpperCase().split(" ");

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

// Primer niza sa pristupom svojstvu
const user = {
  address: {
    city: "Moskva"
  }
};

user.address.city; // "Moskva"

// Primer sa korišćenjem opcionalnog lančanja (?.)
// Omogućava siguran pristup svojstvima ugnježdenih objekata,
// i sprečava greške ako je neka od međuzavisnih svojstava null ili undefined.
user.address?.street; // undefined, bez greške

const anotherUser = {};
anotherUser.address?.city; // undefined, bez greške

Dizajnirajući sopstvene metode za podršku lančanja, svaka metoda treba da vraća this (referencu na trenutni objekat), osim poslednje metode u lancu, koja može da vraća završni rezultat.

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

  addText(text) {
    this.value += text;
    return this; // Vraća this
  }

  addNumber(number) {
    this.value += number;
    return this; // Vraća this
  }

  build() {
    return this.value; // Vraća završni rezultat
  }
}

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