По умолчанию при вызове такой функции, как (function(){/*...*/})()
, значение this
в функции будет установлено на window
(в браузере), независимо от того, какое значение this
может находиться в окружающем контексте, гдеФункция была создана.
Использование call
позволяет вручную установить значение this
на любое значение.В этом случае он устанавливает его на любое значение this
в окружающем контексте.
Возьмите этот пример:
var obj = {
foo:'bar'
};
(function() {
alert( this.foo ); // "bar"
}).call( obj );
http://jsfiddle.net/LWFAp/
Вы можете видеть, что мы смогли вручную установить значение this
для объекта, на который ссылается переменная obj
.