Мемоизирующая обёртка должна быть обычной функцией и вызывать исходную через fn.apply(this, args). Если метод передают отдельно, получателя дополнительно фиксируют через bind или обёртку.
Как сохранить контекст this при вызове мемоизированного метода объекта?
Мемоизирующая обёртка должна быть обычной функцией и вызывать исходную через fn.apply(this, args). Если метод передают отдельно, получателя дополнительно фиксируют через bind или обёртку.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Мемоизирующая обёртка должна быть обычной функцией и вызывать исходную через fn.apply(this, args). Если метод передают отдельно, получателя дополнительно фиксируют через bind или обёртку.
Ключ кеша тоже должен учитывать this, если результат зависит от состояния объекта: одинаковые аргументы у разных экземпляров могут давать разные ответы. Если объект меняется, нужен сброс или версия кеша. Одно использование apply сохраняет контекст вызова, но не делает любой кеш корректным.