3-5最后一段的回调函数为什么要这么写?

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

weibo_隱懓_0

2018-02-03

// 初始化整个游戏的精灵,作为游戏开始的入口
import {ResourceLoader} from "./js/base/ResourceLoader.js"

export class Main {
    constructor() {
        this.canvas = document.getElementById('game_canvas');
        this.canvas.getContext('2d');
        const loader = ResourceLoader.create();
        loader.onLoaded(this.onResourceFirstLoaded )
        
        //loader.onLoaded(map => this.onResourceFirstLoaded(map))
    }

    onResourceFirstLoaded(map) {
        console.log(map)
    }
}


这样写我觉得更好懂一些,至于箭头写法有什么好处呢? 

我现在仅仅觉得是由于用箭头写法是下面的改善写法。

self = this;
loader.onLoaded(function(map) {
   return self.onResourceFirstLoaded(map)
})


但是反而更绕弯了似的。

请老师解答下两种写法的优缺点,谢谢

写回答

2回答

全是甘货

2019-08-17

同学,我也认为应该你那么写,更好懂,而且对onResourceFirstLoaded 在后面的执行没啥影响,像老师那样写首先我是怀疑人生的,进而觉得多此一举,最后还是没找到老师那样写的好处,或者说老师的所有回答都太惜字如金了,没有彻底关联到这样写的实际好处具体体现在哪里的代码(不这样写又会怎样)。

1
0

傅猿猿

2018-02-04

箭头函数最大的作用就是让this的作用域在外面,你想呀,如果直接传function的话,你外面所有的类中定义的类属性都不能用this取了 你必须通过类似self的方法重新在外面取一次,是不是挺累呀

1
0

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

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

3515 学习 · 664 问题

查看课程