0

在下面的代码片段中,为什么 window.foo 存在,但是 this.bar 是未定义的?

function foo() { 
  function bar() {  }; 
  console.log(this.bar); 
}

console.log(window.foo);
foo.call({});
4

1 回答 1

-1

在浏览器中,window 是一个全局对象,因此它在任何地方都可用,除非它被遮蔽。this仅指向作为方法调用的函数体中有用的东西;in foo.bar() - where in bar, thisis foo,或者当 bar.call(...) 或 bar.apply(...) 被调用时带有参数 forthis或者当你完全不在函数调用中时,其中它指向全局对象(窗口)。

您正在明确执行 foo.call({}) 将其设置为空对象。所以 this.bar 在那次通话中不存在。

于 2013-05-07T18:13:56.983 回答