Показать сообщение отдельно
  #7 (permalink)  
Старый 25.03.2013, 18:28
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Гы, приведенное решение не совсем хорошее, вот:
function f(arg) { 
  return arg.toUpperCase(); // может быть любой функцией
}

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

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

}

f = makeCaching(f);

alert( f("aaaa") ); // OK
alert( f("toString") ); // Что-то не то :-(

А вот если изменить проверку условия
if (!(x in cache)) {
if (!(cache.hasOwnProperty(x))) {
тогда все OK
Ответить с цитированием