var x = 0;
var foo = {
x:1,
bar:{
x:2,
baz: function () {
console.log(this.x)
}
}
}
var a = foo.bar.baz
foo.bar.baz() // 2
a() //0
- this 永远指向函数运行时所在的对象,而不是函数创建时所在的对象
- 匿名函数和不处于任何对象中的函数,This指向window
- call, apply, with指的This是谁就是谁。
- 普通函数调用,函数被谁调用,This就指向谁
上面的例子中,baz被bar调用所以指向的指bar. a 运行时所在的对象是 window,所以指向的是window。