在JavaScript中向函数添加选项

时间:2017-02-20 19:38:24

标签: javascript jquery

我正在尝试在JavaScript中为函数添加一些选项。基本上,我想根据通话选项返回不同的结果。我不知道该怎么做但我认为以下代码可以处理它不能:



ExtractingInputStream

 function optional(elem){
 opt1: function(){ console.log( elem/15);},
 opt2: function(){ console.log( elem/50);}
 }


optional(100){opt1}




你能告诉我怎么做吗?

4 个答案:

答案 0 :(得分:4)

您可以将对象键映射到您的函数,并将要调用的函数键作为其他参数传递,如

function optional(elem, trigger) {
  var obj = {
    opt1: function() {
      console.log(elem / 15);
    },
    opt2: function() {
      console.log(elem / 50);
    }
  };

  return obj[trigger];
}


optional(100, 'opt1')();

其他方式,你可以以一种非常紧凑的方式实现这一点,就是传递一个具有相应参数的对象,如

function optional(obj) {
  //don't forget to validate the object you get
  //ex: key exist or not, or the value is int as expected or it's a string and so on
  console.log(obj.val / obj.divideBy);
}

optional({
  val: 100,
  divideBy: 15
});

通过这种方式,您不必声明数百个函数,这些函数可能最终会影响您当前所做的事情。

答案 1 :(得分:0)

somo很少有这样的想法:

function optional(elem, opt){
{
 opt1: function(){ console.log( elem/15);},
 opt2: function(){ console.log( elem/50);}

}
return this[optelm, ]
 }

哪个elm将是'opt1','opt2'....像字符串一样方法可选,如下所示:

optional(elm, 'opt1');

答案 2 :(得分:0)

你可以:

function optional ( opt ) {
  let funcs = {
    opt1: function( data ){ console.log( data/15);},
    opt2: function( data ){ console.log( data/50);}
  }

  return funcs [ opt ];
}

optional ( "opt2" ) ( 100 ) // should trace out "2"

“optional(”opt2“)返回该opt名称指示的功能。 然后“(100)”将一个值(在这种情况下为100)输入该函数并执行它。

答案 3 :(得分:0)

我更喜欢切换案例方法......更少“功能”

function optional(elem, opt) {
    switch(opt) {
        case 1:
            console.log(elem / 15);
            break;
        case 2:
            console.log(elem / 15);
            break;
        default:
            console.log("undefined");
            break;
    }
}