增加对象内部的变量

时间:2015-07-24 17:02:07

标签: javascript function object increment

我试图用函数增加对象内变量的值。

这有效

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

我不想过多地重复我的代码。我想使用函数参数来定位对象内部的变量,而不是自己对其进行硬编码。

2 个答案:

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