【发布时间】:2014-04-30 00:07:26
【问题描述】:
我正在为一本书上的一个 js 记忆示例而苦苦挣扎,代码如下:
Function.prototype.memoized = function(key){
this._values = this._values || {};
return this._values[key] !== undefined ? this._values[key] : this._values[key] = this.apply(this, arguments);
}
这里有一个 fiddle 的完整示例
我真正不明白的是这段代码是如何工作的以及它做了什么,尤其是apply 部分:
return this._values[key] !== undefined ? this._values[key] : this._values[key] = this.apply(this, arguments);
我知道并理解apply 的工作原理
apply() 方法使用给定的 this 值和作为数组提供的参数调用函数
假设this._values[key]等于undefined,那么返回值将是this.apply(this, arguments):这段代码会重新启动memoized函数吗?我尝试在函数中添加一些日志,以查看函数被调用了多少次,但它似乎只启动了一次..
谁能给我一个提示?这可能是一个愚蠢的问题,请耐心等待,谢谢
【问题讨论】: