在JavaScript中为功能添加选项

问题描述:

我想在JavaScript中为某个功能添加一些选项。基本上,我想根据通话选项返回不同的结果。我不知道如何做到这一点,但我认为下面的代码可以照顾它,它不能:在JavaScript中为功能添加选项

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

 

 
optional(100){opt1}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

能否请你让我知道如何做到这一点?

+0

你只想把: 功能可选(ELEM){ 让funcs中= { OPT1:函数() {console.log(elem/15);}, opt2:function(){console.log(elem/50);} } –

+0

您是否希望能够将选项作为参数传递给函数?这个问题不是很清楚。 – ADyson

你可以有对象键映射到你的功能,并通过功能键要调用其他参数一样

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

    return obj[trigger]; 
} 


optional(100, 'opt1')(); 

你可以在一个非常紧凑的方式实现这一目标的其他方式是通过与各自的PARAMS对象像

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

这样,您就不必声明数百个函数,你可能与您正在做的事情结束了。

SOMO一点想法是这样的:

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

} 
return this[optelm, ] 
} 

其中榆树将 'OPT1', 'OPT2' ....考取作为字符串方法可选的是这样的:

optional(elm, 'opt1'); 
+0

感谢Alvaro,但是我怎样才能将值传递给'optional()' –

你可以:

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" 

“可选( ”OPT2“)。返回该选择名称指示的功能 ”(10 0)“然后将一个值(在这种情况下为100)提供给该函数并执行它。

我喜欢的switch-case方法...都不能少 “FUNC-ception”

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