> Как реализовать метод перезагрузки счетчика вызовов функции в декораторе JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Яндекс
Стек: JavaScript
> Пример ответа
Для реализации перезагрузки счетчика вызовов функции в декораторе можно использовать замыкание и хранить счетчик в объекте, доступном для сброса. Пример:
JAVASCRIPTfunction callCounter(fn) {let count = 0;function decorated(...args) {count++;console.log(`Вызов #${count}`);return fn.apply(this, args);}decorated.reset = function() {count = 0;console.log('Счетчик сброшен');};decorated.getCount = function() {return count;};return decorated;}// Использование:const myFunc = callCounter(() => console.log('Работаю'));myFunc(); // Вызов #1, РаботаюmyFunc(); // Вызов #2, РаботаюmyFunc.reset(); // Счетчик сброшенmyFunc(); // Вызов #1, Работаюconsole.log(myFunc.getCount()); // 1
Декоратор возвращает новую функцию с методами reset() и getCount(), что позволяет управлять счетчиком извне. Счетчик хранится в замыкании и не загрязняет глобальную область видимости.
> Похожие задачи по frontend
Как обработать результаты двух асинхронных запросов с условиями success, fail и timeout в JavaScript?
Как обрабатывать превышение лимита вызовов функции в JavaScript и что возвращать
Какие встроенные методы JavaScript помогают соединить строки с разделителем
Приведите пример разницы this и замыкания в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью