我的代码:
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]);
但没有工作,有人可以帮助我吗?
答案 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
时使用冒号而不是等号。