1. 在函数中直接使用 this指向window
2.函数作为对象的方法被调用时(谁调用就指向谁) this 指向调用者
<script>
var name = 222;
var a = {
name: 111,
say: function () {
console.log(this.name);
},
};
var fun = a.say;
fun(); // 在函数中直接使用, this 指向window 所以在全局中 name=222 所以输出222
a.say() // 此时是a调用了say() , 所以say方法里面的this指向 a, a 里面的name=111 所以输出111
var b = {
name: 333,
say: function (fun) {
fun();
},
};
b.say(a.say); // 此时是b调用了say() 而b.say()中的fun()还是在函数中直接使用 所以输出222
b.say = a.say;
b.say(); // 由于上一行 把a.say赋值给了b.say 而b.say()是b调用了say, 所以此时的this指向b 所以输出333
</script>