torna alle lezioni

Concatenazione

importanza: 2

Qui abbiamo un oggetto ladder che ci consente di salire e scendere:

let ladder = {
  step: 0,
  up() {
    this.step++;
  },
  down() {
    this.step--;
  },
  showStep: function() { // shows the current step
    alert( this.step );
  }
};

Ora, se abbiamo bisogno di eseguire più chiamate in sequenza, possiamo:

ladder.up();
ladder.up();
ladder.down();
ladder.showStep(); // 1
ladder.down();
ladder.showStep(); // 0

Modificare il codice di up, down e showStep per rendere le chiamate concatenabili, come in questo esempio:

ladder.up().up().down().showStep().down().showStep(); // shows 1 then 0

Questo approccio è largamente utilizzato dalle librerie JavaScript.

Apri una sandbox con i test.

La soluzione sta nel ritornare l’oggetto stesso ad ogni chiamata.

let ladder = {
  step: 0,
  up() {
    this.step++;
    return this;
  },
  down() {
    this.step--;
    return this;
  },
  showStep() {
    alert( this.step );
    return this;
  }
};

ladder.up().up().down().showStep().down().showStep(); // shows 1 then 0

Possiamo anche scrivere una singola chiamata per riga. Per catene molto lunghe diventa più leggibile:

ladder
  .up()
  .up()
  .down()
  .showStep() // 1
  .down()
  .showStep(); // 0

Apri la soluzione con i test in una sandbox.