new Function() with variable parameters

前端 未结 10 684
傲寒
傲寒 2020-12-25 11:38

I need to create a function with variable number of parameters using new Function() constructor. Something like this:

args = [\'a\', \'b\'];
bod         


        
10条回答
  •  无人及你
    2020-12-25 11:52

    There's a few different ways you could write that.

    // assign normally
    var ab = ['a','b'].join('');
    alert(ab);
    // assign with anonymous self-evaluating function
    var cd = (function(c) {return c.join("");})(['c','d']);
    alert(cd);
    // assign with function declaration
    function efFunc(c){return c.join("");}
    var efArray = ['e','f'];
    var ef = efFunc(efArray);
    alert(ef);
    // assign with function by name
    var doFunc = function(a,b) {return window[b](a);}
    var ghArray = ['g','h'];
    var ghFunc = function(c){return c.join("");}
    var gh = doFunc(ghArray,'ghFunc');
    alert(gh);
    // assign with Class and lookup table
    var Function_ = function(a,b) {
      this.val = '';
      this.body = b.substr(0,b.indexOf('('));
      this.args = b.substr(b.indexOf('(')+1,b.lastIndexOf(')')-b.indexOf('(')-1);
      switch (this.body) {
        case "return": 
          switch (this.args) {
            case "a + b": this.val = a.join(''); break;
          }
        break;
      }
    } 
    var args = ['i', 'j'];
    var body = 'return(a + b);';
    var ij = new Function_(args, body);
    alert(ij.val);
    

提交回复
热议问题