Нет: при memoized.clearCache() значение this будет memoized, а Map.prototype.clear требует объект Map. Нужно привязать метод к cache или вызвать его из обёртки.
Будет ли валидно назначить метод `clear` напрямую как `memoized.clearCache = cache.clear`? Если нет, почему теряется контекст `this` и как исправить это с помощью `bind`?
Нет: при memoized.clearCache() значение this будет memoized, а Map.prototype.clear требует объект Map. Нужно привязать метод к cache или вызвать его из обёртки.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Нет: при memoized.clearCache() значение this будет memoized, а Map.prototype.clear требует объект Map. Нужно привязать метод к cache или вызвать его из обёртки.
memoized.clearCache = cache.clear.bind(cache);
// Либо:
memoized.clearCache = () => cache.clear();
Метод не запоминает объект, из которого его извлекли. Поэтому простое присваивание cache.clear переносит функцию, но не получателя вызова. bind сохраняет нужный this и при дальнейшем вызове через другую переменную.