Паттерн цепочки вызовов методов
Часть раздела Объектно-ориентированное программирование путешествия по 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 из каждого метода, который вы хотите сделать доступным для цепочки.
Задание
Вам дан объект 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В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Объектно-ориентированное программирование
1Объекты и ключевое слово this
Краткий обзор: ОбъектыДобавление методов в объектыПонимание ключевого слова thisФункции-конструкторыКлючевое слово newИтоговое испытание7Наследование и ключевое слово extends
НаследованиеОтношение «is-a»Ключевое слово extendsМетод super()Наследование свойств и методовИтоговое испытание10Полиморфизм
Что такое полиморфизм?Переопределение унаследованных методовИспользование superИтоговое задание13Композиция против наследования
Отношения «has-a» и «is-a»Ограничения глубокого наследованияСоздание объектов2Организация кода
Что такое модули?Экспорт с помощью exportИмпорт с помощью importDefault против именованных экспортов5Инкапсуляция и доступ
ИнкапсуляцияПубличные и приватные поля классовПриватные методыЗадание на повторение8Организация кода ООП
Организация классов в модули11Проект: Отрисовщик фигур
Настройка: Класс Shape и экспортНаследование класса Circle14Система управления библиотекой
Проектирование библиотекиКласс Book с использованием композиции6Проект: Простой банковский счет
Класс BankAccountПополнение и снятие средств9Статические методы и свойства
Уровень класса против уровня экземпляраСтатические свойстваСтатические вспомогательные методыЗадание на закрепление