Firebug控制台窗口范围。为什么“这个”总是不一样?

时间:2009-11-26 13:26:58

标签: javascript debugging firebug

Firebug控制台范围。为什么“这个”总是不一样?那不是一直都是“窗口”吗?

3 个答案:

答案 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是窗口。但是,当您步入控制台中的alertthis时,x变量所持有的对象。 IOW执行上下文中的this与控制台之间没有区别。因此,您可以在调试时使用控制台调整变量和属性的值。

答案 1 :(得分:2)

  

在一个直接调用的函数中   一个显式的所有者对象,导致   的值为默认值   对象(浏览器中的窗口)。

     

在使用该方法调用的函数中   调用语法,如   objname.myFunction()或   objname['myFunction']()导致   这个值是objname。

在JavaScript中查看更多abot调用函数

JavaScript, 5 ways to call a function

答案 2 :(得分:2)

this关键字始终引用被调用函数的所有者。您可以在其上阅读清晰详细的解释here

从我在上面链接的这篇文章中,我认为最清楚地解释了这一点:

alt text http:////i49.tinypic.com/ax1jxw.png