在Javascript中调用动态函数

时间:2014-06-10 17:29:40

标签: javascript

我的代码:

var MyObj = {
    myFnc = function(a, b) {
       console.log('A: '+a+', B: '+b);
    }
}

var list = new Array('myFnc', new Array('var1', 'var2'));
MyObj[list[0]].call(list[1]);

但没有工作,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

我想你想使用apply instead。并且不要忘记第一个参数,即this上下文!

var MyObj = {
    myFnc: function(a, b) {
       console.log('A: '+a+', B: '+b);
    };
}

var list = ['myFnc', ['var1', 'var2']];
MyObj[list[0]].apply(MyObj, list[1]);

答案 1 :(得分:2)

您需要使用.apply代替.call并为apply函数提供上下文:

var MyObj = {
    myFnc : function(a, b) {
       console.log('A: '+a+', B: '+b);
    }
};

var list = new Array('myFnc', new Array('var1', 'var2'));
MyObj[list[0]].apply(window, list[1]);

.apply调用该函数并使用指定的数组作为参数。

此外,在定义myFnc时使用冒号而不是等号。