0

ただ言う代わりに:

var thing = timeConsumingMethod();

次のようなメソッドで変数を非表示にしています。

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

何度も呼び出されます。私は物事を非常に非効率にしているのではないかと心配しています。毎回 timeConsumingMethod を呼び出すと仮定します (これは不要で、常に同じです)。変数を取得するために「_thing()」を呼び出します。

これらのタイプの変数を単純で効率的な方法で管理するにはどうすればよいですか? このようなものは解決策ですか?:

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

基本的に、私は関数の保護が必要であり、(理想的には _thing() などを使用して変数にアクセスしますが、timeConsumingMethod を 1 回だけ実行したいのです。

編集:これを試しましたが、どちらも機能しません:

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 に答える