而不只是说:
var thing = timeConsumingMethod();
我的变量隐藏在类似的方法中:
function _thing() {
var thing = timeConsumingMethod() );
return thing;
}
它被多次调用。我担心我的事情效率很低。我假设它每次调用timeConsumingMethod(这是不必要的,它总是相同的)我调用“_thing()”来获取我的变量。
如何以简单有效的方式管理这些类型的变量?像这样的解决方案吗?:
function _thing() {
return _thing.thing
}
_thing.thing = timeConsumingMethod();
基本上,我想要保护一个函数并且(理想情况下使用_thing()或类似的东西访问我的变量,但我只想让timeConsumingMethod运行一次。
编辑:试过这个,也不起作用:
function _thingy() {
var thing = timeConsumingMethod();
}
_thingy.test = function() {
return( _thingy.thing)
}
答案 0 :(得分:1)
为什么不呢:
function SomethingTimeConsuming() { ... }
function LazyThing(sourceFunction) {
this.sourceFunction = sourceFunction;
this.value = null;
this.Value = function() {
if ( this.value == null) this.value = sourceFunction();
return this.value;
}
}
JSFiddle:http://jsfiddle.net/YSAjJ/
输出:
[14:20:20.079] Calling time-consuming function *(1 time)