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
意味着任何额外的参数传递给foo
afterobj
并将method
被推入一个args
可以被使用的数组中foo
)
编辑: ...args
是有效的。是ES6。
编辑:我的代码看起来非常好。我正在尝试检查被调用的函数是否有问题。对不起,如果是这样的话。
编辑:对不起,问题出在被调用的方法上。我曾说过不一样,但我很困惑。
其中还有另一个回调。
array.forEach(function (a) { // do something with 'this'});
this
显然是未定义的,因为它没有引用该对象。