Мне неприятно вручную устанавливать область видимости объекта каждый раз, когда я объявляю обратный вызов в JavaScript, но это факт жизни. Я подумал, могу ли я сделать это, передав [mycallback] .apply в качестве обратного вызова и объект области видимости в качестве аргумента, например:
var f = function() { console.log(this.x); };
var o = {x: 3};
setTimeout(f.apply, 1000, o);
Насколько я могу судить, это должно вызывать f с o в качестве области видимости, но вместо этого Chrome дает мне «Uncaught TypeError: Function.prototype.apply был вызван на [объект DOMWindow], который является объектом, а не функцией». Почему это не работает?