我有一个像这样的简单对象:
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
,它就是它的开始。
我想知道是否有一种方法可以使用指针,因此它不会传递值但传递引用以使其始终保持最新状态?
答案 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');