这些 this 的指向,是当我们调用这个函数的时候确定的,调用的方式不同决定了 this 的指向不同。this 一般指向我们的调用者
调用方式 | this指向 |
---|---|
普通函数调用 | window |
定时器函数 | window |
立即执行函数 | window |
构造函数调用 | 实例对象(原型对象里面的方法也指向实例对象) |
对象方法调用 | 该方法所属对象 |
事件绑定方法 | 绑定事件对象 |
<script>
// 函数的调用方式:
// 1、普通函数
function fn() {
console.log('武汉');
console.log(this); // window
}
fn();
// 2、对象的方法
var obj = {
fn: function() {
console.log('大学');
console.log(this); // obj
}
}
obj.fn();
// 3、构造函数 :this指向的是实例对象 ldh
function Star() {
this.fn = function() {
console.log(this); // ldh
}
}
var ldh = new Star();
ldh.fn();
// 4、绑定事件函数
var btn = document.querySelector('.btn');
btn.onclick = function() {
console.log(this); // btn
};
// 5、定时器函数 this指向的是 window
setTimeout(function() {
console.log(this); // window
},
1000);
// 6、立即执行函数:自动调用, this指向的是 window
(function() {
console.log('软件工程');
console.log(this); // window
})()
</script>