назад до уроку

Ланцюг викликів

важливість: 2

Існує об’єкт ladder, що дозволяє підійматися вгору-вниз:

let ladder = {
  step: 0,
  up() {
    this.step++;
  },
  down() {
    this.step--;
  },
  showStep: function() { // показує поточний крок
    alert( this.step );
  }
};

Тепер, якщо нам потрібно зробити кілька викликів послідовно, можна зробити це так:

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

Змініть код up, down і showStep так, щоб зробити доступним ланцюг викликів, наприклад:

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

Такий підхід широко використовується в бібліотеках JavaScript.

Відкрити пісочницю з тестами.

Рішення полягає у поверненні самого об’єкта з кожного виклику функції.

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(); // покаже 1, потім 0

Ми також можемо писати виклики функції з нових рядків. Для довгих ланцюгів коду це читабельніше:

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

Відкрити рішення із тестами в пісочниці.