六种this指向,看了就秒懂
1.以函数形式调用时,this永远都是window
function fun(a,b){
console.log("a = "+a+",b = "+b)
console.log(this);
}
fun(123,456)
2.以方法的形式调用时,this是调用方法的对象
var person = {
name:"钢铁侠",
sex:"男",
show:function(){
alert(person.name);
alert(this.name);
}
}
person.show()
3.以构造函数的形式调用时,this指向的是新创建的实例对象
function Person(){
this.obj='李四'
}
const p = Person()
console.log(p.obj)
4.使用call和apply调用时,this是指定的那个对象
5.箭头函数:箭头函数的this看外层是否有函数 如果有,外层函数的this就是内部箭头函数的this如果没有,就是window
6.特殊情况:通常意义上this指针指向为最后调用它的对象。这里需要注意的一点就是如果返回值是一个对象,那么this指向的就是那个返回的对象,如果返回值不是一个对象那么this还是指向函数的实例
function show(){
alert(this)
}
show()
window.show()
7,给元素的某一个事件绑定一个方法如(button.onclick = fn()),当事件触发执行方法,方法中的this就是当前元素(button)
window.onload = function(){
var obtn = document.getElementById("btn")
obtn.onclick = function(){
alert(this);
}
}
<button id="btn">button</button>