所以我非常喜歡面向對象的JavaScript。我想要的是創建一個簡單的全局對象(如jQuery,_,d3等),您可以使用一個參數作爲函數調用。然後它檢查它是否已經知道該參數,如果是,則返回緩存的信息。否則,它會在返回之前獲取新信息並將其緩存。因此,相當於:創建一個簡單的JS對象來修改自己
var cache = {};
function foo(arg) {
if (!cache[arg]) cache[arg] = doSomething(arg);
return cache[arg];
}
function doSomething(arg) {
return arg+"!!!";
}
foo("hi"); //returns "hi!!!" after calling doSomething
foo("hi"); //returns "hi!!!" from cache without calling doSomething
我無法弄清楚如何捲起緩存爲富本身,以便它檢查/調用,而不是隻使用一個單獨的全局變量的時候更新自己的哈希值。我知道,如果我做了這樣的事情會工作:
function cacher() {
this.cache = {};
}
cacher.prototype = {
update: function(arg) {
if (!this.cache[arg]) this.cache[arg] = doSomething(this.cache[arg]);
return this.cache[arg];
}
}
但在這種情況下,我不得不打電話foo.update()
,而不是僅僅foo()
。後者是我想要的。
任何幫助非常感謝。
笑;我只是downvote driveby的受害者,你說「爲什麼」他們說「再見」... – dandavis
發生在我們最好的和最壞的...... :( –
@ dandavis該車明顯高速行駛。 – sabof