我有个问题。我们都知道 Javascript 中闭包的力量,我想利用这种力量。假设我有一个名为“BRB”的对象。我想要的是,每当用户第一次调用 getBrowser() 方法时,它会找出浏览器版本/名称并返回它,并将其作为静态存储在自身内部,当 getBrowser() 第二次调用它时它应该返回相同没有计算的值,因为它已经静态存储在某个地方。这可以通过许多不同的方式完成,我们可以只在对象中存储一个属性,在第一次调用中我们可以为它设置一些值并在以后使用它,我们可以在创建对象时直接运行 getBrowser 方法,语法为
(function()(
...
))()
然而,这不是我想要的。我想要的只是 getBrowser() 方法只计算一次值并一直使用它,我不想将值存储在对象内的其他地方,我不想在创建对象时立即运行此方法,我' m 只允许且仅允许使用此方法,并且所有操作都必须在此方法中进行。我在这里举了一个例子,如您所见,它总是会打印出“0”,但我想要的是它为每个 console.log 请求打印 0,1,2,3。我希望我说清楚了。谢谢。
(
function(window){
if(window.BRB) return;
var BRB = function(){}
BRB.prototype.getBrowser = function(){
var browser = null;
return function(){
if(browser === null){
browser = 0;
}
return browser++;
}
}
window.BRB = new BRB();
})(window);
console.log(BRB.getBrowser()());
console.log(BRB.getBrowser()());
console.log(BRB.getBrowser()());
console.log(BRB.getBrowser()());