正在从窗口全局对象执行Foo,如下所示:
new Foo(); // false why?
Foo(); // true
function Foo()
{
alert(this == window);
};
但是当我运行此功能Foo代码时,警报消息显示为false,为什么从全局窗口对象执行Foo时为什么会这样?
答案 0 :(得分:3)
这是因为您使用了new
。 new
运算符创建一个新对象,将该对象的原型设置为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
函数。