箭头函数作为一个函数的回调参数传参的问题

来源:3-5 ES6与小游戏资源加载器的封装

慕沐11207

2018-11-29

老师
export class Main{

const loader =ResouceLoader.create();
loader.onLoaded(map=>this.onResourceFirstLoaded(map));//不理解为什么要这样写

onResouceFirstLoaded(map){
	this.ctx = xxx;
}

}

export class Main{

const loader =ResouceLoader.create();
loader.onLoaded(this.onResourceFirstLoaded );

onResouceFirstLoaded(map){
	this.ctx = xxx;//报错不认识ctx
}

}

onLoaded是资源加载器类的一个函数,他的传入参数是一个回调函数,为什么
loader.onLoaded(this.onResourceFirstLoaded )这样写会有问题,this.onResourceFirstLoaded是Main类的一个函数啊?
还有写成map=>this.onResourceFirstLoaded(map),这是箭头函数的另一种写法吗?怎么理解它?
我理解的箭头函数是(map)=>{函数内容}
上面如何理解他?可以单纯的理解为用this.onResourceFirstLoaded函数内容替换的形式吗,下面这样。
map=>{
this.ctx = xxx;//报错不认识ctx
}

写回答

1回答

傅猿猿

2018-11-29

这个是作用域问题,比如说,你如果是匿名回调的话,this指向函数本身,而箭头函数其实是指向最外层的类的。这样就可以避免self这种hack写法了

0
1
慕沐11207
我突然理解了这个,之前是设置自带的回调函数 比如setTimeout设置回调函数 现在是给自己定义的函数设置回调函数就已下载没反应过来 汗!!! 还有就是map=>this.onResourceFirstLoaded(map)这个箭头函数的写法 是不是把回调函数体单独写到一个函数的写法?
2018-11-30
共1条回复

微信小游戏入门与实战,一天之内搞定微信小游戏开发

官方同步,第一时间掌握整套微信小游戏开发核心技术

3515 学习 · 664 问题

查看课程