1.普通函数/方法中的this,谁调用就是谁
function demo(){
console.log('普通函数')
}
demo();
在这个例子中,demo函数的调用者实际上是window对象,相当于window.demo()所以this指向的是window
我们再看一个例子:
let p = {
name:'小明',
say:function(){
console.log('大家好')
}
}
p.say() //这里调用了say方法
在这个例子里面很明显调用者是p , 所以this的指向就是p
2.箭头函数中的this,是父作用域的this,而不是调用者
例如:
let p = {
name:'小明',
say:()=>{
console.log(this)
}
}
p.say()
这里可以明确的告诉大家,say函数打印出来的this是window,下面放图来认证
这就是因为箭头函数统一了this的指向,只会指向父作用域。
而在JS里,只有创建一个函数的时候才会开辟一块作用域,图中的例子只是创建了一个对象,所以this的对象指向父级作用域:window