我试图用函数增加对象内变量的值。
这有效
var player = {
tech: 0,
energy: 0
};
function getResource2(amount, id) {
player.tech += amount;
document.getElementById(id).innerHTML = player.tech;
}
window.setInterval(function() {
getResource2(5, "Tech");
}, 1000);
这不是
var player = {
tech: 0,
energy: 0
};
function getResource(resource, amount, id) {
resource += amount;
document.getElementById(id).innerHTML = resource;
window.setInterval(function() {
getResource(player.tech, 1, "Tech");
}, 1000);
我不想过多地重复我的代码。我想使用函数参数来定位对象内部的变量,而不是自己对其进行硬编码。
答案 0 :(得分:1)
除了资源之外,你可以通过将播放器传递给函数来解决这个问题。然后你应该能够像这样增加目标资源:
player[resource] += amount;
整个功能看起来像这样:
function getResource(player, resource, amount, id) {
player[resource] += amount;
document.getElementById(id).innerHTML = player[resource];
}
然后你可以这样称呼它:
window.setInterval(function() {
console.log("I'm working");
getResource(player, 'tech' , 1, "Tech");
console.log(player.tech);
}, 1000);
请注意,tech
将作为字符串文字传递。
答案 1 :(得分:0)
Sculper已经提供了很好的答案,但我更喜欢以更面向对象的方式将逻辑保留在对象中。
示例:
catch