代码之家  ›  专栏  ›  技术社区  ›  Andre Pena

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

  •  6
  • Andre Pena  · 技术社区  · 15 年前

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

    3 回复  |  直到 11 年前
        1
  •  3
  •   Mark Amery Harley Holcombe    11 年前

    价值 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} 线路,切换到控制台 是窗户。但是当你走到 alert 线 控制台中的对象由 x 变量。没有区别 在执行上下文和控制台中。因此,您可以在调试时使用控制台调整变量和属性的值。

        2
  •  2
  •   rahul    15 年前

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

    在使用方法调用的函数中 调用语法,比如 objname.myFunction() objname['myFunction']() 引起 此值为objname。

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

    JavaScript, 5 ways to call a function

        3
  •  2
  •   Steerpike    15 年前

    这个 this 关键字始终引用被调用函数的所有者。你可以看清楚详细的解释 here .

    从我在上面链接的文章中,我认为这张图片解释得最清楚:

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