使用连接构造函数名称

时间:2016-03-31 07:55:48

标签: javascript

我怎样才能做出类似的事情:

var string1 = "functionNameBeginning";
var string2 = "functionNameEnding";

element.innerHTML = string1 + string2 //string1 + string2 is name of function to execute

UPD:我想要的是执行名为string1string2()的函数,用户Spencer Wieczorek在他对eval()函数的评论中理解我。我真的找到了解决这个问题的更好主意。因为这是我想用来处理Wordpress网站上select input的价值的方式:

<select name="formula" class="left-input" id="formula">
    <option value="mifflin" selected>Mifflin-St Jeor</option>
    <option value="harris">Harris–Benedict</option>
    <option value="katch">Katch-McArdle</option>
</select>

我在WP插件中编写了这个函数:

if ($_POST['formula'] == 'mifflin') {
    return mifflinFormula();
} else if ($_POST['formula'] == 'harris') {
    return harrisFormula();
} else {
    return katchFormula($_POST['fat']);
}

2 个答案:

答案 0 :(得分:2)

  

如果在function范围内声明了global(window),则可以在使用key时使用window表示bracket variable key function functionNameBeginning() { return 'Hi...'; } function functionNameEnding() { return 'Bye...'; } var string1 = "functionNameBeginning"; var string2 = "functionNameEnding"; var element = document.body; element.innerHTML = window[string1]() + window[string2](); } function functionNameBeginning() { return 'Hi'; } function functionNameEnding() { return 'Bye'; } function HiBye() { return 'Hi...Bye executed!'; } var string1 = "functionNameBeginning"; var string2 = "functionNameEnding"; var element = document.body; element.innerHTML = window[window[string1]() + window[string2]()]();

&#13;
&#13;
var topicos = [];

jQuery('div').each(function(){
var data = {};
var jThis = jQuery(this);
  data.topic = jThis.find('strong').text();
  data.subtopics = [];
  jThis.next('ul').find('li').each(function(){
  var jThis = jQuery(this);
    data.subtopics.push(jThis.text());
  });
topicos.push(data);
});

console.log(topicos);
&#13;
&#13;
&#13;

修改

如果你有一个函数名,它是在连接前两个函数返回的值之后形成的,你可以这样做。但我建议你使用你自己的对象,将属性值作为函数。

&#13;
&#13;
<div class="js-topic-data">
  <div>
    <strong class="js-topic">Java Basics&nbsp;</strong>
  </div>
  <ul>
    <li class="js-sub-topic">
       Define the scope of variables&nbsp;</li>
    <li>
  </ul>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您是在尝试执行一项任意函数,还是您可以控制它是如何定义的?

如果它是任意的,你可能会走上危险的道路,因为你需要使用{{1}}来执行它,这总是有风险的。

如果它在你的控制之下,试试这个:

{{1}}