- 函数预编译过程 this --> window
- 全局作用域里 this --> window
- call / apply 可以改变函数运行时 this 指向
- obj.func(); func()里的this指向obj 谁调用 this就指向谁
- 练习
var name = '222';
var a = {
name: '111',
say: function () {
console.log(this.name);
}
}
var fun = a.say;
fun(); // 在全局执行 没人调用 this指向 window
a.say(); // 在a里执行 this指向 a
var b = {
name: '333',
say: function(fun) {
fun();
}
}
b.say(a.say); // this 指向b ,但 fun()执行 所以走预编译 this指向window 如果是this.fun() 会找b里面的fun方法执行
b.say = a.say;
b.say(); // 在b里面执行 this指向b