Javascript 指向一个对象';超时中的属性

Javascript 指向一个对象';超时中的属性,javascript,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) }, 1

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

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
因此,在运行时,
百分比
发生变化

但是在
upgrade\u-bar
功能中,它仍然是
2
,这就是它最初的功能


我想知道是否有一种方法可以使用指针,这样它就不会传递值,而是传递引用,这样它就总是最新的?

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

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

这就限制了我只能使用一个对象,如果我在其他方面制作进度条,那么它就不是很灵活了。这意味着我需要为每个对象设置一个函数=/@Dave,它允许您传入任何具有
percentage
属性的
对象。这怎么不灵活呢?是的,但在我的情况下,它们是在一起的示例
myObject.percentage
myObject.percentage 2
如果我解析一个字符串并执行
myObject[string]
=/@Dave,那么可以使用第三个参数作为属性名(
)。请参阅我的编辑。@T.J.Crowder我需要告诉它使用percentage2或percentage1。这限制了我只能使用一个对象。我应该为其他方面制作进度条,这不是很灵活。这意味着我需要为每个对象设置一个函数=/@Dave,它允许您传入任何具有
percentage
属性的
对象。这怎么不灵活呢?是的,但在我的情况下,它们是在一起的示例
myObject.percentage
myObject.percentage 2
如果我解析一个字符串并执行
myObject[string]
=/@Dave,那么可以使用第三个参数作为属性名(
)。请参阅我的编辑。@T.J.Crowder我需要告诉它使用百分比2或百分比1。