箭头函数的this指向所在对象所处于的环境。
听起来有点绕,简单理解,箭头函数住哪儿,它里面的this就是指向它住所所处于的地方,而不是指向它的住所。
比如我住在房子里,房子在某某小区。那么就说我在某某小区,而不能说我在房子里。同理把我理解成箭头函数的this,就很好理解了。
来看第一个例子:
let obj={
init:()=>{
console.log(this)//window
}
}
上面这个例子中,箭头函数住在obj里面,obj就是住所或者房子,那么房子又在哪呢?房子在window环境里,那么箭头函数的this指向window。
箭头函数->obj->window,箭头函数指向window
再来看第二个例子:
var obj = {
x:100,
show(){
setTimeout( ( )=>{console.log(this.x) }
, 500 )
}
}
这个例子中的箭头函数住在show()里面,而show()方法在obj环境里面,所以箭头函数指向obj
箭头函数->show()->obj,箭头函数指向obj
注:父级作用域=所在外部环境