每次我在 JavaScript 中声明回调时都必须手动设置对象的范围,这令人沮丧,但这是不争的事实。我想知道是否可以通过将 [mycallback].apply 作为回调传递,并将范围对象作为参数传递来做到这一点,如下所示:
var f = function() { console.log(this.x); };
var o = {x: 3};
setTimeout(f.apply, 1000, o);
据我所知,这应该以 o 作为范围调用 f,但 Chrome 却给了我“未捕获的 TypeError:Function.prototype.apply 在 [object DOMWindow] 上被调用,这是一个对象而不是函数”。为什么这不起作用?