我正在尝试理解如何将数据作为函数变量分配到javascript上。
我创建了fn()foo,并分配了一个属性foo.bar = {},用于测试缓存的请求。这很好用!
与此同时,我创建了一个使用原型的示例,我用它来测试和证明这个概念(http://jsbin.com/vowux/2/)。在这里,如果我们在没有'new'关键字的情况下尝试它,原型将无效。
我想知道在哪里可以找到有关将数据存储为函数属性的更多信息,或者获取有关其工作原理的更多信息?
function hasCache( param ) {
var results;
if ( hasCache.cache[param] ) {
console.log('-> Cached:');
results = hasCache.cache[param];
} else {
console.log('-> Not Cached:');
results = param;
hasCache.cache[param] = results;
}
return results;
}
hasCache.cache = {};
console.log( hasCache("foo") );
console.log( hasCache("foo") );
此处提供实时示例http://jsbin.com/vowux/1/
感谢您的期待!
答案 0 :(得分:0)
您需要的是IIFE。
不是将缓存作为函数的参数,而是在任何地方都可用,甚至在函数之外。
使用IIFE可以让您拥有一个保存缓存的“私有”变量。对于isntance:
var hasCache = (function() {
var cache = {};
return function(cacheKey) {
if ( !cache.hasOwnProperty(cacheKey) ) {
cache[cacheKey] = cacheKey;
}
return cache[cacheKey];
}
})();
我还冒昧地折射你的代码。你有一些奇怪的事情发生在那里。