2009-11-26 45 views

回答

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

+0

谢谢你的回答..但是,一个问题:如果我没有陷入断点,“这个”可以不是控制台中的窗口吗? – 2009-11-27 01:13:04

2

在直接调用而不 明确所有者对象功能,使的的 值是默认 对象(在浏览器窗口)。

在使用该方法 调用语法调用的函数,像 objname.myFunction()objname['myFunction'](),导致要OBJNAME的这个 值。

查看更多ABOT调用函数在JavaScript

JavaScript, 5 ways to call a function

+0

这个答案准确,因为它实际上并没有解决问题,因为它涉及到控制台的行为。 – AnthonyWJones 2009-11-26 13:55:31

相关问题