0

而不是仅仅说:

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)
}
4

1 回答 1

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)
于 2013-05-31T09:29:41.957 回答