js箭头函数this的指向

箭头函数this指向最近作用域中的this

普通函数this指向调用他的对象,
箭头函数this指向最近作用域中的this(如果最近作用域没有this再向外一层一层的找直到找到最近的this)

let obj = {
	aaa(){
		console.log(this)//flag1:obj.aaa()所以this->obj
		setTimeout(function(){
			console.log(this)//flag2:this->window
			setTimeout(function(){
				console.log(this);//this->window
			})
			setTimeout(()=>{
				console.log(this)//箭头函数this指向最近的flag2处的所以this->window
			})
		})
		setTimeout(()=>{
			console.log(this)//箭头函数this指向最近的flag1处的所以this->obj
			setTimeout(()=>{
				console.log(this);//箭头函数this指向最近的flag1处的所以this->obj
			})
		})
	}
}
obj.aaa()

如果 obj.aaa() 改成 let fn = obj.aaa; fn(),此时所有的this都指向window

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值