在超时时指向对象的属性

时间:2013-07-18 04:29:29

标签: javascript

我有一个像这样的简单对象:

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,它就是它的开始。

我想知道是否有一种方法可以使用指针,因此它不会传递值但传递引用以使其始终保持最新状态?

1 个答案:

答案 0 :(得分:4)

JavaScript没有pass-by-reference参数。

您可以做的是传递对象本身并引用其属性。并且,关于您对不同属性的评论,您可以添加另一个参数来了解要使用的属性。

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');