setTimeout中的this指向

setTimeout中的this指向

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var x = 1;
var obj = {
x:2,
fn:function(){
console.log(this.x);
console.log(this);
console.log(obj)
}
}
obj.fn();
//output:
// 2
// {
// x:2,
// fn:f()
// }
// {
// x:2,
// fn:f()
// }


setTimeout(obj.fn, 1000);
// output
//1
//window全局对象
// {
// x:2,
// fn:f()
// }
//等同于:setTimeout是window下的方法
window.setTimeout(obj.fn, 1000);
// obj.fn相当于把fn函数给拿出来调用
window.setTimeout(function(){
console.log(this.x);//this是全局对象
console.log(this);//全局
console.log(obj);//obj
}, 1000);