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();