JavaScript全局对象?

Lea*_*cim 4 javascript

"this"的值是指下面程序中的全局对象还是对象"o"?

更重要的是,我可以运行什么代码来测试"this"的引用是什么?

function F() { 
    function C() { 
        return this;
    } 
    return C();
} 

var o = new F();
Run Code Online (Sandbox Code Playgroud)

Fel*_*ing 12

它指的是全局对象(window).

编辑:实际上,它会同时参考,全局对象 o,因为他们是相同的.o将返回从中返回的对象的引用,该对象F()是从中返回C()window对象;)

您可以调用console.log(this)以找出它所引用的对象.它应该为您提供控制台上对象的所有方法的列表,您应该能够从中推断出它是哪个对象.
为了在Firefox中工作,你需要Firebug.对IE不知道.

更新:

@Anurag已经向您展示了如何明确设置this.如果您只想引用this更高的范围,则必须明确地将其分配给变量.例:

function F() {
    var that = this; 
    function C() { 
        console.log(that);
    } 
    C();
}
Run Code Online (Sandbox Code Playgroud)