Почему при запуске в окне консоли Chrome это не регистрируется в консоли?
(function (){
'use strict';
function Foo() {
this.foo = function() {
setTimeout(function(){ console.log(this); }, 0);
}
}
new Foo().foo();
}())
Если бы я не объявил строгий режим, тогда глобальный объект был бы выведен на консоль (т.е. окно).
НО, учитывая, что объявлен строгий режим, я ожидал, что undefined будет напечатано на консоли.
Ссылка:
"Это означает, среди прочего, что в браузерах больше нельзя ссылаться на объект окна через эту функцию в строгом режиме".
Обновление: чтобы достичь ожидаемого поведения, вам нужно создать новый контекст выполнения и сослаться на это в этом контексте следующим образом:
(function (){
'use strict';
function Foo() {
this.foo = function() {
setTimeout(function(){ (function() { console.log(this); }()) }, 0);
}
}
new Foo().foo();
}())