Назад к задачам
ЯндексПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
7
Создание обёртки‑шпиона для любой функции
Компании, где спрашивали:
Условие задачи
Реализуйте функцию spy, которая принимает другую функцию и возвращает её обёртку, имитирующую поведение оригинала. Помимо выполнения, обёртка должна сохранять информацию о каждом вызове: количество вызовов в data.calls, массив переданных аргументов в data.args и полученные результаты в data.results. Пример использования:
function _sum(a, b) {
return a + b
}
function spy(f) {
// ТУТ ПИШЕМ КОД
}
const sum = spy(_sum)
console.log(sum(2, 2)) // 4
console.log(sum(21, 21)) // 42
/* КОЛИЧЕСТВО ВЫЗОВОВ ФУНКЦИИ _sum */
console.log(sum.data.calls) // 2
/* ВРЕМЕНИ С КОТОРЫМИ была вызвана функция _sum, с сохранением порядка вызовов */
console.log(sum.data.args) // [(2, 2], [21, 21])
/* результаты, которые вернула функция _sum, с сохранением порядка вызовов */
console.log(sum.data.results) // [4, 42]