Menu
Coddy logo textTech

Паттерн цепочки вызовов методов

Часть раздела Объектно-ориентированное программирование путешествия по JavaScript на Coddy — урок 16 из 56.

Цепочка вызовов методов — это паттерн программирования, который позволяет вызывать несколько методов одного и того же объекта в одной инструкции. Каждый метод возвращает сам объект (this), что позволяет вызывать следующий метод в той же строке.

Создайте простой объект-счетчик:

const counter = {
  count: 0,
  
  increment() {
    this.count++;
    return this;
  },
  
  decrement() {
    this.count--;
    return this;
  },
  
  getValue() {
    return this.count;
  }
};

Теперь вы можете объединять методы в цепочки:

// Цепочка из нескольких операций
counter.increment().increment().decrement();

// Теперь значение счетчика равно 1
console.log(counter.getValue()); // Вывод: 1

Ключом к цепочке вызовов методов является возврат this из каждого метода, который вы хотите сделать доступным для цепочки.

challenge icon

Задание

Вам дан объект calculator, у которого уже есть методы add() и subtract(). Ваша задача — добавить методы multiply и divide, которые возвращают this для обеспечения возможности цепочного вызова.

Шпаргалка

Цепочка вызовов методов (method chaining) позволяет вызывать несколько методов одного и того же объекта в одном выражении. Каждый метод возвращает сам объект (this), что позволяет вызывать следующий метод в той же строке.

Чтобы реализовать цепочку вызовов, возвращайте this из каждого метода:

const counter = {
  count: 0,
  
  increment() {
    this.count++;
    return this;
  },
  
  decrement() {
    this.count--;
    return this;
  },
  
  getValue() {
    return this.count;
  }
};

Объедините несколько методов в цепочку:

counter.increment().increment().decrement();
console.log(counter.getValue()); // Вывод: 1

Попробуйте сами

import { calculator } from './calculator.js';

// Тестовый код - не изменять
const result1 = calculator.add(10).multiply(2).getValue();
console.log(result1); // Должно вывести 20

// Сброс для второго теста
calculator.value = 0;
const result2 = calculator.add(20).divide(4).subtract(1).getValue();
console.log(result2); // Должно вывести 4
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Объектно-ориентированное программирование