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。