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 回答