Вы можете изменить контекст функции (то есть значение this
), вызвав ее с помощью .call()
или .apply()
и передав в качестве первого аргумента предполагаемый контекст.
* 1006 Е.Г. *
function fn() {
return this.foo;
}
fn.call({foo:123}); // => 123
Примечание: передача null
в call
или apply
делает контекст объектом global
, или, в большинстве случаев, window
.
Вероятно, стоит отметить разницу между .apply()
и .call()
. Первый позволяет передавать набор аргументов функции, к которой он применяется, как массив, а второй позволяет просто добавлять их в качестве обычных аргументов после аргумента контекста:
someFunction.apply( thisObject, [1,2,3] );
someFunction.call( thisObject, 1, 2, 3 );
Из источника jQuery :
for ( var value = object[0];
i < length &&
callback.call( value, i, value ) // <=== LOOK!
!== false;
value = object[++i] ) {}