Firebug控制台范围。为什么“这个”总是不一样?那不是一直都是“窗口”吗?
答案 0 :(得分:3)
控制台中this
的值与当前正在执行的代码中this
的值相同。考虑: -
function outer()
{
// this is window
var x = {n:12};
var fn = function()
{
// this is object {n:12}
alert(this.n);
}
fn.call(x);
}
...
<img src="thing.gif" onclick="outer()" />
如果在x = {n:12}
行上设置断点,请切换到控制台,您会发现this
是窗口。但是,当您步入控制台中的alert
行this
时,x
变量所持有的对象。 IOW执行上下文中的this
与控制台之间没有区别。因此,您可以在调试时使用控制台调整变量和属性的值。
答案 1 :(得分:2)
在一个直接调用的函数中 一个显式的所有者对象,导致 此的值为默认值 对象(浏览器中的窗口)。
在使用该方法调用的函数中 调用语法,如
objname.myFunction()
或objname['myFunction']()
导致 这个值是objname。
在JavaScript中查看更多abot调用函数
答案 2 :(得分:2)
this
关键字始终引用被调用函数的所有者。您可以在其上阅读清晰详细的解释here。
从我在上面链接的这篇文章中,我认为最清楚地解释了这一点: