是否可以引用变量

时间:2013-07-31 18:54:00

标签: javascript

我有一个具有大约30个'值'的对象或者它们被称为的任何对象,例如:

var list = new Object();
list.one = 0;
list.two = 0;
list.three = 0;
...
list.thirty = 0;

是否有一种简单/有效的方法可以增加列表对象的值?

例如,假设有100个按钮,按下每个按钮会使值增加一定量。我想要做的是一个简短的功能,如:

function test( value, amount, math ) {
   if( math === "add" ) {
   value += amount;
   } else if( math === "sub" ) {
   value -= amount;
   }
}

但整个值的东西不起作用=(。我能想到的另一种方法是创建30个函数,每个函数执行与上面相同的操作,但每个函数指定要添加或减去的列表值。或使用if值===“one”然后list.one等制作单个函数。还有其他任何想法吗?我考虑过使用数组但我更喜欢让代码易于阅读,因为列表值具有特定的在其他功能中使我更容易使用的名称。

提前感谢您提供任何帮助

4 个答案:

答案 0 :(得分:5)

尝试这样的事情:

function inc(value,amount) {
  list[value] += amount;
}

答案 1 :(得分:1)

您可以按名称以字符串形式访问属性:

function test(obj, name, amount, math) {
  switch (math) {
    case "add":
      obj[name] += amount;
      break;
    case "sub":
      obj[name] -= amount;
      break;
  }
}

使用例如:

来调用它
test(list, "one", 1, "add");

答案 2 :(得分:1)

  

是否可以引用变量?

没有。但是可以引用一个对象,并使用variable property names。这实际上就是你已经拥有的,所以你可以将你的功能改为

function test( value, amount, math ) {
    if( math === "add" ) {
        list[value] += amount;
    } else if( math === "sub" ) {
        list[value] -= amount;
    }
}

并使用test("one", 100, "add")而不是test(list.one, 100, "add")进行调用。顺便说一下,我建议只使用负值而不是add/sub动词。

答案 3 :(得分:1)

list[value] += amount;

其中value是“one”,“two”等字符串

你也可以传递对象来增加:

function(obj, value, amount, math) {
  obj[value] += math;
}

但你应该使用数组+循环/重构。