Javascript 为什么这是指窗口对象?

Javascript 为什么这是指窗口对象?,javascript,Javascript,为什么这指的是窗口对象而不是o。我在对象o上下文中,所以它应该将我打印10对吗?匿名函数在10毫秒后执行,而执行上下文当时不在o中 查看的答案匿名函数在10毫秒后执行,此时执行上下文不在o中 查看的答案要发出此警报20,请将this.x更改为简单x要发出此警报20,请将this.x更改为简单x var x = 5, o = { x: 10, doIt: function doIt(){ var x = 20;

为什么这指的是
窗口对象而不是o
。我在
对象o
上下文中,所以它应该将我打印10对吗?

匿名函数在10毫秒后执行,而执行上下文当时不在
o


查看

的答案匿名函数在10毫秒后执行,此时执行上下文不在
o


查看的答案要发出此警报20,请将
this.x
更改为简单
x
要发出此警报20,请将
this.x
更改为简单
x

   var x = 5,
    o = {
        x: 10,
        doIt: function doIt(){
            var x = 20;
            setTimeout(function(){
                alert(this.x);
            }, 10);
        }
    };
o.doIt();
传递到
setTimeout()
的所有函数都在
全局范围内执行。该值为5,因为此.x与window.x相同


传递到
setTimeout()
的所有函数都在
全局范围内执行。该值为5,因为该.x与window.x相同。您可以直接访问变量x。它指的是
window
是因为它在
function(){}
内。您可以直接访问变量x。它指的是
window
是因为它在
function(){}
内。PS:要使它发出警报10,
o.x
.PS:要使其成为警报10,
o.x
var x = 5,
    o = {
        x: 10,
        doIt: function doIt(){
            var x = 20;
            setTimeout(function(){
                alert(this.x);
            }, 10);
        }
    };
o.doIt();