今天说说this的指向问题,这个问题困扰很久,这次好好整理一下。
一、问题归类
1、全局环境输出this,this指向全局对象
2、全局函数输出this,this指向全局对象
3、对象的方法中调用this,this指向调用该方法的对象
4、DOM事件输出this,this指向 触发事件的DOM对象
5、构造函数中的this,this指向new创建的对象
二、实例
1、全局环境输出this
<script>
console.log(this); // window
</script>
2、全局函数输出this
function fun(){
console.log(this)
}
fun(); // window
3、对象的方法中调用this
let cat = {
name:"喵喵",
sayName(){
console.log(this.name); // this指向调用该方法的对象,也就是cat,cat来调用sayName()方法
}
}
cat.sayName();
4、DOM事件输出this
<button>按钮</button>
<script>
let btn = document.querySelector("button");
btn.onclick = function(){
console.log(this); //<button>按钮</button>
}
</script>
5、构造函数中的this
function Fun(){
this.name = "小明"
}
let f = new Fun();
console.log(f); // this代表f