Javascript调用函数引用

时间:2014-02-02 00:15:46

标签: javascript

function (type, a, b) {
  var types = {
    'add' : this.add(a,b),
    'subtract' : this.subtract(a,b),
    'multiply' : this.multiply(a,b)
  };

  if(types[type])
    return types[type];
}

这可能很简单,但我似乎无法弄明白。我想要一个字符串映射到函数引用(参数预先填充),如果类型有效,我想在地图中调用指定的函数。

这个设置有效,但它实际上是在初始化数组时调用方法,这不是我想要的。我只想在类型有效时调用该函数。我只想在设置函数时保留对我想要进行的函数调用的引用。这可能吗?感谢。

1 个答案:

答案 0 :(得分:4)

看起来你想要:

function (type, a, b) {
  var types = {
    'add' : this.add, // assign reference
    'subtract' : this.subtract,
    'multiply' : this.multiply
  };

  if(types[type])
    return types[type](a, b); // call function
}

但你也可以完全避免创建对象:

function (type, a, b) {
  if(['add', 'subtract', 'multiply'].indexOf(type) > -1)
    return this[type](a, b);
}