为什么对象“ this”没有引用全局窗口对象?

时间:2018-09-21 18:28:44

标签: javascript

正在从窗口全局对象执行Foo,如下所示:

  new Foo();   // false why?
  Foo();       // true

 function Foo()
 { 
     alert(this == window); 
 };

但是当我运行此功能Foo代码时,警报消息显示为false,为什么从全局窗口对象执行Foo时为什么会这样?

3 个答案:

答案 0 :(得分:3)

这是因为您使用了newnew运算符创建一个新对象,将该对象的原型设置为Foo.prototype,然后调用this设置为等于新创建的对象的Foo。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new

答案 1 :(得分:1)

它不在窗口上下文中。它在函数上下文中。如果您希望它位于窗口上下文中,则可以

foo.call(window);

答案 2 :(得分:-2)

JavaScript具有功能级范围。在您的示例中,this指的是Foo函数。