每一个函数内部都有一个关键字是 this
可以让我们直接使用的
重点: 函数内部的 this 只和函数的调用方式有关系,和函数的定义方式没有关系
函数内部的 this 指向谁,取决于函数的调用方式
常见的this指向:
1.全局函数作为参数的函数--window
function fn() {
console.log(this)
this.a = 1;//window.a=1; 增加一个全局变量
}
fn();
// 此时 this 指向 window
2.构造函数内部的this 指的是new 的时候创建的对象
function Dog(name) {
this.name = name
console.log(this);//指的是new创建的对象Dog
}
let d1 = new Dog('xiaohei');
console.log(d1);
3.对象的方法:this指的是调用方法的对象
let obj = {
a: 1,
run() {
console.log(this.a);
console.log(this);
}
}
// run 里面的this 就是 obj
obj.run();
4.事件处理函数:给谁添加的事件,this就是谁。
div.onclick = function () {
console.log(this)
}
// 当你点击 div 的时候,this 指向 div
5.箭头函数: 没有自己的this,跟上下文一致
document.addEventListener('click', function () {
console.log(this);//doc
setTimeout(() => {
console.log(this);//doc
}, 1000);
})