3
我正在閱讀John Resig關於Javascript的書的memoization一章,我有以下問題: 是否更好的方法開發memoization或創建緩存作爲對象的屬性假設我可以修改對象的設計?
此示例實現高速緩存作爲對象的功能的一部分:我應該使用memoization或對象的緩存
function Calc() {
this._cache = {};
this.isEven = function(arg) {
return this._cache[arg] !== undefined ?
this._cache[arg] :
this._cache[arg] = (arg%2===0);
}
}
此示例實現高速緩存作爲功能的功能部:
function Calc() {
this.isEven = function(arg) {
this.isEven.cache = this.isEven.cache || {};
return this.isEven.cache[arg] !== undefined ?
this.isEven.cache[arg] :
this.isEven.cache[arg] = (arg%2===0);
}
}
這是他們應該被使用的方式:
var obj = new Calc();
obj.isEven(3);
>>'如果你有一個「isOdd」函數呢?你會希望它有自己的緩存嗎?是的,但我也可以在對象中創建第二個緩存? >>'這不是一個很好的例子,因爲x%2 == 0是一個非常便宜的操作,你說得對,但我試圖讓我的示例儘可能簡單以便於說明 –