Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: decorator, counter, closure, function method

Как добавить метод сброса счётчика к функции-декоратору?

Вопрос проверяет понимание того, как добавить метод сброса счётчика к функции-декоратору в JavaScript, что важно для управления состоянием и тестирования.

Короткий ответ

Чтобы добавить метод сброса счётчика к функции-декоратору, нужно создать замыкание, которое хранит счётчик, и вернуть функцию с присвоенным ей свойством, например, reset. Внутри reset обнуляем счётчик. Это позволяет управлять состоянием декоратора извне.

Длинный ответ

Добавление метода сброса счётчика к функции-декоратору

Декоратор — это функция, которая оборачивает другую функцию, добавляя к ней новое поведение. Часто декораторы используются для подсчёта вызовов. Чтобы добавить возможность сброса счётчика, можно присвоить возвращаемой функции свойство, которое будет содержать метод сброса.

Пример реализации

Рассмотрим декоратор countCalls, который подсчитывает количество вызовов функции. Мы добавим метод reset, который обнуляет счётчик.

function countCalls(fn) {
  let count = 0;

  function wrapped(...args) {
    count++;
    console.log(`Вызов #${count}`);
    return fn.apply(this, args);
  }

  wrapped.reset = function() {
    count = 0;
    console.log('Счётчик сброшен');
  };

  return wrapped;
}

const sayHi = countCalls(() => console.log('Привет!'));
sayHi(); // Вызов #1, Привет!
sayHi(); // Вызов #2, Привет!
sayHi.reset(); // Счётчик сброшен
sayHi(); // Вызов #1, Привет!

Как это работает

  • Замыкание сохраняет переменную count внутри декоратора.
  • Возвращаемая функция wrapped имеет доступ к count и увеличивает его при каждом вызове.
  • Свойство wrapped.reset — это функция, которая обнуляет count.

Применение

Такой подход полезен для отладки, профилирования или тестирования, когда нужно сбрасывать состояние между тестами. Он также демонстрирует, как функции в JavaScript могут иметь собственные методы.

Вывод: Добавление метода сброса к декоратору счётчика — это простой и эффективный способ управления состоянием, который особенно полезен в тестировании и мониторинге производительности.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    3

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#decorator

#counter

#closure

#function method

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию