JavaScript dynamic function name

前端 未结 4 1391
忘了有多久
忘了有多久 2021-01-27 15:19

I need to dynamically assign the name of a function to an element of an associative array. This is my attempt which does not work. The problem I am asking for help with is here

相关标签:
4条回答
  • 2021-01-27 15:37

    If you want to store it as a function, pass the function directly. Otherwise, if you just want to store it as a string, then you can use the quotes.

    Change:

    cr['cmd1'] ='foo';
    

    To:

    cr['cmd1'] = foo;
    
    0 讨论(0)
  • 2021-01-27 15:45

    Access the functions using this syntax window[function_name]('para1');

    Your usage will be something like this

    var msg = window[cr['cmd1']](x);
    
    0 讨论(0)
  • 2021-01-27 15:46

    What you are doing there is assigning a function to an array. A more common pattern that you are probably trying to do is to call a function on an object with the array notation.

        <script type="text/javascript">
            var cr = {};
            cr.cmd1 = function foo(y){
                return y;
            };
            var x = 5;
            var msg = cr['cmd1'](x);  
            alert(msg);
        </script>
    

    This code results in an alert box that contains the number 5.

    0 讨论(0)
  • 2021-01-27 15:50

    I would use window[] and make sure its a function before trying to execute it since you don't have control over what is passed.

    var f = window[cr['cmd1']];
    if(typeof f==='function') {
      f(x);
    }
    
    0 讨论(0)
提交回复
热议问题