Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.10.2022, 22:38
Новичок на форуме
Отправить личное сообщение для Amonecks Посмотреть профиль Найти все сообщения от Amonecks
 
Регистрация: 01.01.2022
Сообщений: 6

Декоратор с кешированием
Доброго всем времени суток. Есть пара вопросов касательно механики декоратора. Допустим у нас есть:
let cache = new Map();

function slow(x) {
      return x;
}

function decorator(func){
return function(x){
        if(cache.has(x)){
            return cache.get(x);
        }

        let result = func(x);

        cache.set(x, result);
        return result;
    }
}

slow = decorator(slow);


Правильно ли я понял, что в момент slow = decorator(slow) - функция переписывается и становится

function slow(x){
    if(cache.has(x)){
            return cache.get(x);
    }
    let result = slow(x);
    cache.set(x, result);
    return result;
}

Тоесть let result = slow(x) является рекурсивным вызовом? Но тогда как это работает если по идеи рекурсивный вызов так же вызовет slow и тд. Или же let result = slow(x) в моменте вызова decorator выглядит так:
let result = return x;

Тоесть изначальной функции?
Ответить с цитированием
  #2 (permalink)  
Старый 06.10.2022, 23:13
Новичок на форуме
Отправить личное сообщение для Amonecks Посмотреть профиль Найти все сообщения от Amonecks
 
Регистрация: 01.01.2022
Сообщений: 6

Тоесть если я правильно понял
let rusult = func(x);

Вызывает функцию, не измененную, а ссылается на ту что была инициализирована изначально?
Ответить с цитированием
  #3 (permalink)  
Старый 07.10.2022, 00:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Сообщение от Amonecks
ссылается на ту что была инициализирована изначально?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Angular 2+: Как создать свой декоратор? Как создаются стандартные? Shitbox2 Angular.js 2 31.07.2017 19:19
Декоратор с использованием setTimeout Nikola Flamel Общие вопросы Javascript 5 15.11.2013 18:53
Задача на декоратор gh321 Общие вопросы Javascript 8 30.09.2012 03:39