0

次のような単純なオブジェクトがあります。

myObject.percentage =  2;
bar = document.getElementByID('the_div');

だから私はこれを持っています:

function upgrade_bar(bar,percentage) {
console.log(percentage);

    bar._timer = setTimeout(function () {
            upgrade_bar(bar,percentage)
        }, 10000);
} 
upgrade_bar(bar,myObject.percentage);

myObject.percentage = 4;
//upgrade_bar still console.logs 2 instead of 4

したがって、これが実行されている間、他の場所percentageは変化しています。

upgrade_barしかし、関数の内部では、2それがどのように始まったかはまだです。

ポインターを使用して値を渡さずに参照を渡す方法があるかどうか疑問に思っているので、常に最新の状態になりますか?

4

1 に答える 1

4

JavaScript には、参照渡しの引数がありません。

できることは、オブジェクト自体を渡し、そのプロパティを参照することです。また、さまざまなプロパティに関するコメントについては、別の引数を追加して、どちらを使用するかを知ることができます。

function upgrade_bar(bar, settings, key) {
    key = key || 'percentage';
    console.log(settings[key]);

    bar._timer = setTimeout(function () {
        upgrade_bar(bar, settings, key);
    }, 10000);
}

upgrade_bar(bar, myObject, 'percentage');
于 2013-07-18T04:36:19.843 に答える