如何存储变量:特权方法,静态属性

时间:2013-05-31 08:26:42

标签: javascript performance global-variables scope

而不只是说:

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

1 个答案:

答案 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)