我正在阅读 John Resig 的关于 Javascript 的书的记忆化章节,我有以下问题:假设我可以修改对象的设计,是为方法开发记忆化还是将缓存创建为对象的属性更好?
此示例将缓存作为对象功能的一部分实现:
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);