Прямая передача cache.clear теряет привязку this; для Map это приведёт к TypeError при вызове с неподходящим получателем.
Что произойдёт, если вместо колбэка передать clearCache как прямую ссылку на метод cache.clear (без замыкания)? Почему это не будет работать и как это исправить (например, через bind)?
Прямая передача cache.clear теряет привязку this; для Map это приведёт к TypeError при вызове с неподходящим получателем.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Что произойдёт, если вместо колбэка передать clearCache как прямую ссылку на метод cache.clear (без замыкания)? Почему это не будет работать и как это исправить (например, через bind)?
Ответ
Прямая передача cache.clear теряет привязку this; для Map это приведёт к TypeError при вызове с неподходящим получателем.
Используйте () => cache.clear() или cache.clear.bind(cache). Первый вариант вызывает метод через объект, второй заранее фиксирует получателя. Передача ссылки на метод сама по себе не сохраняет объект, из которого эту ссылку получили.