(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();
}())