function foo(obj, method, ...args) {
if (!(method in obj)) return null;
try {
alert(!!obj); //shows true
return obj[method].apply(obj, args);
}
catch (e) {
alert(e);
}
}
当我foo使用定义的对象、它的有效方法和一些参数调用时,它显示:
TypeError: this is undefined.
这是什么意思?
我认为this在这里很重要,因为我正在使用apply谁的第一个参数将用作this调用的方法内部。但这里obj是有效的,它甚至不调用所需的方法。甚至在之前就发现了一个错误。
(...args意味着任何额外的参数传递给fooafterobj并将method被推入一个args可以被使用的数组中foo)
编辑: ...args是有效的。是ES6。
编辑:我的代码看起来非常好。我正在尝试检查被调用的函数是否有问题。对不起,如果是这样的话。
编辑:对不起,问题出在被调用的方法上。我曾说过不一样,但我很困惑。
其中还有另一个回调。
array.forEach(function (a) { // do something with 'this'});
this显然是未定义的,因为它没有引用该对象。