Использование Function.prototype.apply для установки области обратного вызова javascript

Мне неприятно вручную устанавливать область видимости объекта каждый раз, когда я объявляю обратный вызов в 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], который является объектом, а не функцией». Почему это не работает?

9
задан incidentist 24 March 2011 в 14:06
поделиться