> Как реализовать метод перезагрузки счетчика вызовов функции в декораторе JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Яндекс

Стек: JavaScript

> Пример ответа

Для реализации перезагрузки счетчика вызовов функции в декораторе можно использовать замыкание и хранить счетчик в объекте, доступном для сброса. Пример:

JAVASCRIPT
function 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(), что позволяет управлять счетчиком извне. Счетчик хранится в замыкании и не загрязняет глобальную область видимости.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью