为什么这个JavaScript示例指向全局对象(窗口)?

为什么这个JavaScript示例指向全局对象(窗口)?,javascript,Javascript,分解组件元素 假设你要这样做: function F() { function C() { return this; } return C(); } var o = new F(); 这里显然没有对象上下文,因此这个是窗口 将该设置包装到构造函数中不会改变这样一个事实,即直接调用C()C()的上下文中不涉及任何对象不是f对象的方法。与中一样,您不能调用o.C()。如果这有道理的话。因为您返回的是C()的返回值,而不是新的C实例,所以它返回窗口对象。

分解组件元素

假设你要这样做:

function F() {
    function C() { 
        return this;
    } 
    return C();
} 
var o = new F();
这里显然没有对象上下文,因此
这个
窗口

将该设置包装到构造函数中不会改变这样一个事实,即直接调用
C()
C()
的上下文中不涉及任何对象不是
f
对象的方法。与中一样,您不能调用
o.C()。如果这有道理的话。因为您返回的是
C()
的返回值,而不是新的C实例,所以它返回窗口对象。

函数F(){return this;}也将返回窗口。那么var obj=这个。只要“this”没有其他值,它就不是“this”的值。

函数C()不是F的方法,您需要做的事情如下:

function C() {
    return this;
}
var o = C();
虽然这有点复杂,但当你可以这样做来实现同样的目标时:

function F() {
    this.C = function() { 
        return this;
    } 
    return this.C();
} 
var o = new F();
function F() {}
var o = new F();