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

How to store variables: Privileged method, static property

本文关键字:方法 特权 静态 属性 变量 何存储 存储      更新时间:2023-09-26

而不是直接说:

var thing = timeConsumingMethod();

我把变量隐藏在一个方法中,像这样:

function _thing() {
    var thing = timeConsumingMethod() );
    return thing;
    }

它被调用了很多次。我担心我让事情变得非常低效。我假设每次我调用"_thing()"来获取变量时它都会调用timeConsumingMethod(这是不需要的,它总是一样的)。

如何以简单有效的方式管理这些类型的变量?像这样的东西是解决方案吗?:

function _thing() {
    return _thing.thing 
    }
    _thing.thing = timeConsumingMethod();

基本上,我想要一个函数的保护,并(理想情况下)访问我的变量使用_thing()或类似的东西,但我只希望timeConsumingMethod运行一次。

编辑:试过这个,也不工作:

function _thingy() { 
var thing = timeConsumingMethod();
}
_thingy.test = function() {
return( _thingy.thing)
}

为什么不直接:

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)