@Rapen

Как обертка получила доступ к элементу из функции-декоратора?

Каким образом обертка получает доступ к объекту cache, из декоратора, если, здесь замыканием и не пахнет,

function f(x) {
  return Math.random()*x;
}


function makeCaching(f) {
  var cache = {}; 

  return function(x) {
    if (!(x in cache)) {
      cache[x] = f.call(this, x);
    }
    return cache[x];
  };

}

f = makeCaching(f);

var a = f(1);
var b = f(1);
alert( a == b ); // true (значение закешировано)

b = f(2);
alert( a == b ); // false, другой аргумент => другое значение
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы