调用普通函数和数组Javascript中的函数

调用普通函数和数组Javascript中的函数,javascript,Javascript,我的代码: var myc = { utils: { my_fnc: function(a) { console.log('This is: '+a); } }, run: function(type, name, args) { if (type == 1) { //call function in myc.utils return myc.utils[name].apply(myc.ut

我的代码:

var myc = {
   utils: {
      my_fnc: function(a) {
        console.log('This is: '+a);
      }
   },
   run: function(type, name, args) {
      if (type == 1) {
         //call function in myc.utils
         return myc.utils[name].apply(myc.utils, args);
      } else {
        //call global function
        return name.apply(null, args);
      }
   }
};
function myFnc(a) {
   console.log('This is: '+a);
}
例1:

myc.run(1, my_fnc, new Array('a value')); 
它在工作

例2:

myc.run(2, myFnc, new Array('a value'));
它不工作,这是错误:未捕获类型错误:未定义不是函数


有人能帮我吗?

是的,我想输入1,我调用全局函数myFnc,我如何才能做到这一点?您确定第一个
run
调用按照编写的方式工作吗?调用尝试使用不存在的
my_fnc
变量。函数应该是字符串。@用户,很奇怪,您传递的是函数而不是它的名称,所以它应该可以工作。您正在从全局范围调用
run()
?sth也有道理。你说示例1可以工作,但它不能,需要引用函数名才能工作
'my_func'
。您说示例2不起作用,但它确实起作用,而且肯定不会产生所示的错误。