"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)